我有一个运行 Angular4 的网站,其中包含一个使用ng2-file-upload上传数据的简单表单上传数据的简单表单。我将这些文件发送到基于 Node.js 的无服务器离线服务器,我的目的是将这些从表单接收到的文件简单地写入磁盘。
我尝试以多种不同的方式进行操作,最后我在这里找到了将事件中的表单解析为 json 的方法。生成的 json 在具有视频数据的字段之一中包含一个缓冲区,如下所示:
{ Host: 'localhost:3000',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0',
Accept: '*/*',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
Referer: 'http://localhost:4200/myupload',
'Content-Length': 2391623,
'Content-Type': 'multipart/form-data; boundary=---------------------------2125290100942661667805976894',
Origin: 'http://localhost:4200',
Connection: 'keep-alive' }
{ file:
{ type: 'file',
filename: 'y9K18CGEeiI.webm',
contentType: 'video/webm',
content: <Buffer 1a 45 e3 01 00 00 00 00 00 00 1f 42 fd fd 01 42 fd fd 01 42 fd 04 42 fd 08 42 fd fd 77 65 62 6d 42 fd fd 02 42 fd fd 02 18 53 fd 67 01 00 00 00 00 14 ... > } }
现在我要做的是使用 fs 将文件保存在缓冲区中:
module.exports.handler = (event, context, callback) => {
let data = multipart.parse(event, false);
fs.writeFile('meme.webm', data.file.content, 'binary', function(err) {
if(err) {
console.log(err);
} else {
console.log('saved!');
}
});
// etc ...
};
该文件以正确的大小 (1.3MB) 保存到磁盘,与原始文件相同。不幸的是,我似乎无法在另一边打开它,我认为它要么是因为编码,要么是因为我将它写入磁盘的方式。有任何想法吗?