相关疑难解决方法(0)

将图像从 lambda 上传到 s3(损坏的文件)

我创建了一个 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)

amazon-s3 express aws-lambda serverless-framework

4
推荐指数
1
解决办法
2725
查看次数

无法查看 s3 上传的图像文件

我正在使用 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

4
推荐指数
1
解决办法
5293
查看次数