无法使用node.js将Blobfile upload到S3

我用connect-multiparty中间,我有下面的代码:

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); }); 

而我在terminal下面得到的结果是:

 { 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', 

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

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

这个参数是

1. 图像 :base64格式的图像

2. 文件名:文件名string例如:'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); } }); }; 

还需要在调用此方法之前进行AWSconfiguration

 var AWS = require('aws-sdk'); AWS.config.update({ accessKeyId: '', secretAccessKey: '', region: '' }); var s3Bucket = new AWS.S3( { params: {Bucket: 'name of the bucket'} } ); 

req.files不是你需要上传的东西,试试这个:

 var fs = require('fs') var photo = req.files.photo var data = { Key: req.body.filename, Body: fs.createReadStream(photo.path), ContentType: photo.type }; s3Bucket.putObject(data, function (err, result) { if (err) console.error(err); else console.log(result); });