我有一个运行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( 保存到磁盘,与原始文件相同。不幸的是,我似乎无法在另一侧打开它,我认为这要么是因为编码,要么是因为我将其写入磁盘的方式。有什么想法吗?
对于有此问题的任何人,请在此处检查此问题。这是无服务器离线转换文件数据的问题,除了应用分叉之外,似乎没有什么可以做的。