Node.js上传chunk并将其保存到文件中

时间:2018-03-23 04:02:25

标签: javascript node.js

这是漫长的一天没有成功,尝试将文件上传到服务器并保存。例如,我想将图像文件上传到服务器,我设法使用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它是一场噩梦。我做了谷歌全部,但大多数教程已经过时,不起作用。我不想再把时间花在这上面了,我希望我能在这里得到一些帮助或正确的方向来解决它。提前谢谢

1 个答案:

答案 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'参数中提取,类似于文件。