【问题标题】:Read remote file into node Buffer in the browser在浏览器中将远程文件读入节点缓冲区
【发布时间】:2015-07-20 23:02:58
【问题描述】:

我正在使用 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);

问题是缓冲区的类型为ArrayBuffer,但 FCS() 需要一个缓冲区,该缓冲区仅在节点中可用,所以我会得到一个错误。在节点中,您可以执行以下操作:

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

任何想法如何在浏览器中将远程文件读入节点缓冲区?

【问题讨论】:

    标签: javascript node.js npm browserify


    【解决方案1】:

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

    1) 浏览器化模块:

    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/

    【讨论】:

    • 实际上注意到这并不完美。 “new Buffer(reader.result)”的结果与在节点中完成时的结果不同。调查原因
    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多