我创建了一个 node express 应用程序,它使用multer将图像上传到我的“assets-in”s3 存储桶。图像上传到 s3 后,图像处理 lambda 函数会获取图像并将其调整为另一个 s3 存储桶。
上传脚本:
var assetsBucketIn = new AWS.S3({
accessKeyId : "...",
secretAccessKey : "...",
region : "...",
params : {
Bucket : "..."
}
});
var uploadAssets = multer({inMemory : true});
var imgFieldSettings = [
{
name : 'uploadFiles',
maxCount : 7
}
];
router.post('/images', uploadAssets.fields(imgFieldSettings), (req, res, next) => {
...
uploadPromises = [];
for(let i = 0; i < req.files.uploadFiles.length; i++){
let params = {
Key : …Run Code Online (Sandbox Code Playgroud) 我正在使用 s3 上传图像文件。但每当我尝试使用 URL 以及从 s3 控制台下载时,都会下载图像文件。但是,图像查看器将看不到它。它只是显示不兼容的文件类型。
myS3Function.uploadFile(request.body.fileName, request.files.myFileData, "image_folder").then(filename => {
//success
})
Run Code Online (Sandbox Code Playgroud)
。
const AWS = require('aws-sdk');
const s3 = new AWS.S3({
region: process.env.REGION
});
exports.uploadFile = (filename, data, folderName) => {
return new Promise((resolve, reject) => {
const params = {
Bucket: process.env.AWS_S3_BUCKET,
Key: folderName+'/'+filename,
Body: data.data,
ACL:'public-read',
ContentType: "image/jpeg"
};
s3.upload(params, function(s3Err, data) {
if (s3Err) reject(s3Err)
console.log(`File uploaded successfully at ${data.Location}`)
resolve(`${data.Location}`)
});
});
}
Run Code Online (Sandbox Code Playgroud)
我现在使用邮递员上传文件作为表单数据。我可以正确地看到使用此代码上传的文本文件。那么为什么图像会出现这个问题呢?此外,图像和 pdf 实际文件大小也略有增加。
javascript amazon-s3 amazon-web-services serverless-framework serverless