我使用了connect-multiparty midwhere,我的代码如下:
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);
});
我在终端中得到了以下结果:
{ 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
的价值?
答案 0 :(得分:4)
如果您有base64格式的图片,可以使用以下方法。
这方面的参数是
1. 图片:图片的base64格式
2. FileName :字符串中的文件名称例如:' name.jpg'
var AWS = require('aws-sdk');
AWS.config.update({
accessKeyId: '',
secretAccessKey: '',
region: ''
});
var s3Bucket = new AWS.S3( { params: {Bucket: 'name of the bucket'} } );
此外,您还需要在调用此方法之前进行AWS配置,如此
preconsent
答案 1 :(得分:0)
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);
});