您好,我正在使用 html5 filereader 和 node fs 将文件上传到服务器,到目前为止我可以做到这一点,但结果文件比原始文件大。 这是我的代码。
var f = document.getElementById('file').files[0],
r = new FileReader();
console.log(f); //for checking file info
r.onloadend = function(e) {
var data = e.target.result;
var fs = require('fs');
try {
fs.writeFileSync(f.name, data, 'utf-8');
console.log('saved sucessfully!');
} catch (e) {
alert('Failed to save the file !');
}
}
r.readAsBinaryString(f);
}
最佳答案
开始工作了。我必须将数据转换为 ArrayBuffer
这是我最终的工作代码:
var fs = require('fs');
var f = document.getElementById('file').files[0],
r = new FileReader();
// console.log('srcPath='+f.path);
// console.log('savPath='+f.name);
r.onloadend = function(e) {
var data = e.target.result;
try {
fs.writeFileSync('uploads/' + f.name, Buffer.from(new Uint8Array(this.result)));
console.log('saved sucessfully!');
} catch (e) {
alert('Failed to save the file !');
}
//send your binary data via $http or $resource or do anything else with it
}
r.readAsArrayBuffer(f);
console.log('binary=' + r);
关于javascript - 上传 Node FS 后文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48472053/