无法使用 node.js 将 blob 文件上传到 S3

Mar*_*ane 3 amazon-s3 node.js

我使用了连接多方中间件,我有以下代码:

console.log(req.files)

      var data = {
        Key: req.body.filename,
        Body: req.files,
        ContentType: 'image/jpeg'
      };


      s3Bucket.putObject(data,function(err,result){
        console.log(err);
      });
Run Code Online (Sandbox Code Playgroud)

我在终端中得到以下结果:

{ photo: 
   { fieldName: 'photo',
     originalFilename: 'blob',
     path: '/var/folders/n1/fr69rt5j01sfwjhsh3jx3gh00000gn/T/Tw4pwoPQ5D7zCGxrk3U1ywKp',
     headers: 
      { 'content-disposition': 'form-data; name="photo"; filename="blob"',
        'content-type': 'image/jpeg' },
     size: 50138,
     name: 'blob',
     type: 'image/jpeg' } }
{ [InvalidParameterType: Expected params.Body to be a string, Buffer, Stream, Blob, or typed array object]
  message: 'Expected params.Body to be a string, Buffer, Stream, Blob, or typed array object',
  code: 'InvalidParameterType',
Run Code Online (Sandbox Code Playgroud)

任何线索这不起作用?应该是什么Body值?

Sup*_*j v 5

如果您有 base64 格式的图像,您可以使用以下方法。

这个的参数是

1.图像:base64格式的图像

2. FileName : 字符串中的文件名 例如:'name.jpg'

var UploadFilesToS3 = function(image,FileName) {  //
    buf = new Buffer(image.replace(/^data:image\/\w+;base64,/, ""),'base64');
    var data = {
        Key: FileName,
        Body: buf,
        ContentEncoding: 'base64',
        ContentType: 'image/jpeg'
    };
    s3Bucket.putObject(data,function (data,err){
        if(err)
        {
            console.log('failed to Upload: '+ err.body);
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

而且您还需要在像这样调用此方法之前进行 AWS 配置

var AWS = require('aws-sdk');
AWS.config.update({
        accessKeyId: '',
        secretAccessKey: '',
        region: ''
    });

var s3Bucket = new AWS.S3( { params: {Bucket: 'name of the bucket'} } );
Run Code Online (Sandbox Code Playgroud)