首页 > 解决方案 > 使用无服务器框架和连接多方模块将图像从 lambda 上传到 S3 后图像损坏

问题描述

当我从本地上传图像时,它工作正常,我可以从浏览器查看图像,但是当我使用无服务器框架从 lambda 上传图像时,图像显示为空白的白色方框,s3bucket.upload 的主体数据为 <Buffer 格式我已经尝试转换为base64并缓冲,即使没有运气。

const express = require('express');
const bodyParser = require('body-parser');
var Request = require("request");
const AWS = require('aws-sdk');
var app = express();
var fs = require('fs');
const serverless = require('serverless-http');
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart({ uploadDir: '/tmp' })

app.post('/uploadImageToS3',multipartMiddleware, (req, res) => {
console.log(req.files);
console.log(req.files.uImage.type);
    if(typeof req.files.uImage !== 'undefined' && req.files.uImage !== null)
    {

       AWS.config.update({
    accessKeyId: '.................',
    secretAccessKey: '................................',
    region: 'ap-south-1'
  });
  var file = req.files.uImage;
  var s3bucket = new AWS.S3();


 fs.readFile(file.path, function (err, data) {

       var params = {
            Bucket: "..........",
            Key:file.name,
            Body:data,
            ContentType: req.files.uImage.type,
            ContentEncoding: 'base64'
        };
console.log(data);
        s3bucket.upload(params, function(err, data) {
            if (err) {
            return res.status(400).json(err);
            console.log('ERROR MSG: ', err);
            } else {
                console.log(data.Location);
                res.status(200).json(data);
            }
        });

});
}else
{
return res.status(400).json('No files were uploaded.');
}

});

标签: node.jsamazon-s3uploadaws-lambdaserverless

解决方案


推荐阅读