我想知道是否有人知道如何在使用express/nodejs时从上传的文件中提取文件内容
我有以下代码,很清楚如何将输入通过管道传输到文件流,但如何将上传反序列化为纯 JavaScript 对象?目的是从上传的文件中提取信息并在其他地方使用它。理想情况下,我不想通过磁盘上的临时文件。文件格式为json。
app.post("/upload", function(req, res){
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
console.log("Uploading: " + filename);
console.log(file);
console.log(fieldname);
// I don't want to go via a file, but straight to a JS object
//fstream = fs.createWriteStream('/files/' + filename);
//
//file.pipe(fstream);
//
//fstream.on('close', function () {
//
// res.redirect('back');
//
//});
});
});
文件上传触发如下:
var formData = new FormData($('form')[0]);
e.preventDefault();
$.ajax({
url: 'upload',
type: 'POST',
data: formData,
cache: false,
dataType:'json',
contentType: false,
enctype: 'multipart/form-data',
processData: false,
success: function (response) {
}
});
最佳答案
如果您不介意先缓冲文件内容,您可以执行以下操作:
app.post("/upload", function(req, res){
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
var buf = '';
file.on('data', function(d) {
buf += d;
}).on('end', function() {
var val = JSON.parse(buf);
// use `val` here ...
}).setEncoding('utf8');
});
});
关于javascript - 文件上传时解析文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400136/