这是漫长的一天没有成功,尝试将文件上传到服务器并保存。例如,我想将图像文件上传到服务器,我设法使用pulpload和HTTP模块。我确实收到了块,我可以将它保存到文件中,但文件没有打开。这是我的代码:
**server side:**
var http = require('http');
http.createServer(function (req, res) {
req.on('data', function(chunk) {
fs.appendFileSync(__dirname +'/file.jpg' , chunk, function (err) {
})
})
}).listen(8081);
收到所有块后,该文件包含一些我不确定此数据属于jpg文件的数据:
------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="name"
3fd639c096a4196a8d9bfbf2f568a87fc-f0xd-w1020_h770_q80.jpg
------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="chunk"
0
------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="chunks"
1
------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="fileupload"; filename="blob"
Content-Type: application/octet-stream
ÿØÿà JFIF
当所有块都已保存后,我无法打开文件,我尝试了很多教程和模块,但没有成功。我的问题是,它可以做到吗?我确实设法使用php,java,甚至使用coldfusion它是一块蛋糕,但有了node.js它是一场噩梦。我做了谷歌全部,但大多数教程已经过时,不起作用。我不想再把时间花在这上面了,我希望我能在这里得到一些帮助或正确的方向来解决它。提前谢谢
答案 0 :(得分:2)
在multipart / form-data请求中,表单字段使用边界分隔。需要解析正文以获取字段或数据。有许多模块可供选择,“多方”就是其中之一。 也许,这应该让你前进:
- Effect: Deny
Principal:
AWS:
!GetAtt UserA.Arn
Action: "s3:DeleteObject"
Resource:
Fn::Join: ["", ["arn:aws:s3:::", Ref: "S3Bucket", "/*"]]
- Effect: Allow
Principal:
AWS:
!GetAtt UserA.Arn
Action: "s3:PutObject"
Resource:
Fn::Join: ["", ["arn:aws:s3:::", Ref: "S3Bucket", "/*"]]
- Effect: Allow
Principal: "?" # * is public?
Action: s3:GetObject
Resource:
Fn::Join: ["", ["arn:aws:s3:::", Ref: "S3Bucket", "/*"]]
非二进制字段可以从传递的'fields'参数中提取,类似于文件。