我在 S3 中的图像不显示。怎么了?
My Image in S3 Not Show. What's Wrong?
我已经使用以下代码将图像从我的节点 js web 上传到 S3:
router.post('/uploadtest', multipartMiddleware, function(req, res, next) {
var file = req.files.file;
var data = {Key: file.originalFilename, Body: file.path, ContentType: file.type, ACL: 'public-read'};
s3Bucket.putObject(data, function(err, data) {
if (err)
{ console.log('Failed!');
res.redirect("/lookpic?url=null");
} else {
console.log('Success!');
var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename
res.redirect("/lookpic?url="+urls);
}
});
});
成功了,我的图像存储到我的 S3 存储桶中,但是当我单击 link 查看我的图像时,结果如下:
http://i.stack.imgur.com/qAM5N.png
我的步骤有什么问题?
您只是在 body 属性中指定了文件路径,而文件数据应该在 body 属性中提供。试试这个:
var fs = require('fs');
router.post('/uploadtest', multipartMiddleware, function(req, res, next) {
var file = req.files.file;
var file_data = fs.readFileSynch(file.path);
var data = {Key: file.originalFilename, Body: file_data, ContentType: file.type, ACL: 'public-read'};
s3Bucket.putObject(data, function(err, data) {
if (err)
{ console.log('Failed!');
res.redirect("/lookpic?url=null");
} else {
console.log('Success!');
// remove the uploaded file if you want to
fs.unlink(file.path, function(err) {
if (err) throw err;
});
//
var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename
res.redirect("/lookpic?url="+urls);
}
});
});
使用fs模块同步读取待上传文件。检查此 link:https://nodejs.org/api/fs.html
我已经使用以下代码将图像从我的节点 js web 上传到 S3:
router.post('/uploadtest', multipartMiddleware, function(req, res, next) {
var file = req.files.file;
var data = {Key: file.originalFilename, Body: file.path, ContentType: file.type, ACL: 'public-read'};
s3Bucket.putObject(data, function(err, data) {
if (err)
{ console.log('Failed!');
res.redirect("/lookpic?url=null");
} else {
console.log('Success!');
var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename
res.redirect("/lookpic?url="+urls);
}
});
});
成功了,我的图像存储到我的 S3 存储桶中,但是当我单击 link 查看我的图像时,结果如下: http://i.stack.imgur.com/qAM5N.png
我的步骤有什么问题?
您只是在 body 属性中指定了文件路径,而文件数据应该在 body 属性中提供。试试这个:
var fs = require('fs');
router.post('/uploadtest', multipartMiddleware, function(req, res, next) {
var file = req.files.file;
var file_data = fs.readFileSynch(file.path);
var data = {Key: file.originalFilename, Body: file_data, ContentType: file.type, ACL: 'public-read'};
s3Bucket.putObject(data, function(err, data) {
if (err)
{ console.log('Failed!');
res.redirect("/lookpic?url=null");
} else {
console.log('Success!');
// remove the uploaded file if you want to
fs.unlink(file.path, function(err) {
if (err) throw err;
});
//
var urls = 'https://'+sendurl+'.amazonaws.com/'+myBucket+'/'+file.originalFilename
res.redirect("/lookpic?url="+urls);
}
});
});
使用fs模块同步读取待上传文件。检查此 link:https://nodejs.org/api/fs.html