在浏览器中将远程文件读入节点 Buffer

Read remote file into node Buffer in the browser

我正在使用 browerify 在浏览器中使用 this 包。我创建了一个 phonegap 应用程序,可以从服务器下载 .fcs 文件。我的代码是:

    var reader = new FileReader();

        reader.onloadend = function(e){
            var buffer = this.result;

            var options = {};

            var fcs = new FCS(options, buffer);

        };


    reader.readAsArrayBuffer(file);

问题是 buffer 的类型是 ArrayBuffer 但 FCS() 需要一个 Buffer,它只在节点中可用,所以我会得到一个错误。在节点中,你可以这样做:

var FS = require('fs');
FS.readFile(filename, function(err, databuf) {
       var fcs = new FCS(options, databuf);
});

我知道如何将远程文件读入浏览器中的节点缓冲区吗?

您需要使用浏览器的缓冲模块。例如:https://github.com/feross/buffer

1) Browserify 模块:

browserify -r buffer -r fcs -o bundle.js

2) 简单测试:

<input type='file' onchange='openFile(event)'>
<script src="bundle.js"></script>
<script>

var Buffer = require('buffer').Buffer;
var FCS = require('fcs');

var openFile = function(event) {
  var input = event.target;
  var reader = new FileReader();

  reader.onload = function(){
    var data = new Buffer( reader.result );
    var fcs = new FCS({}, data);
    console.log(fcs);
  };
  reader.readAsText(input.files[0]);
};

</script>

https://jsfiddle.net/o9qo8e0t/