node.js - 使用无服务器框架和连接多方模块将图像从 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.');
}
});
解决方案
推荐阅读
- terraform - 使用没有特定提供程序版本的 Terraform
- python - 无法找到 CSV 文件
- php - 我正在使用 load data local infile 导入数据。我希望每一行都有一个包含动态值的列。我怎样才能做到这一点?
- azure - 从 azure 管道中的发布文件夹构建 docker 映像
- jquery - jQuery:1个ajax请求和一个函数:将参数传递给函数
- powershell - 如何在没有管理员权限的情况下删除 C:\Program Files\SomeApp?
- python-3.x - 无法打印以下基本图案
- typescript - 仅将对象键缩小到具有字符串值的对象键
- node.js - 使用 express 和 Websocket 托管 NodeJS 服务器,以便您可以使用 Flutter 来回发送数据
- python - 如何以某种方式实现熊猫数据框