在浏览器中将远程文件读入节点 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>
我正在使用 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>