2015-07-20 36 views
1

在瀏覽器中使用browerify使用this包。我創建了一個phonegap應用程序,用於從服務器下載.fcs文件。我的代碼是:在瀏覽器中讀取遠程文件到節點Buffer中

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); 
}); 

任何想法如何,我可以在瀏覽器中讀取遠程文件到節點緩衝區?

回答

0

您需要爲瀏覽器使用緩衝模塊。例如: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/

+0

精湛謝謝 – Mark

+0

其實完全注意到這行不通。 「新緩衝區(reader.result)」的結果與在節點中完成時的結果不同。調查爲什麼 – Mark