【发布时间】:2018-11-16 23:37:09
【问题描述】:
我正在使用 Multer 在 Node js 中上传文件,但我没有得到正确的文件。我正在尝试上传图片。 我要把导入的文件上传到S3桶但是找不到文件,不知道哪里错了。
这是我的节点 js 代码:
import "@tsed/multipartfiles";
import Path = require("path");
const rootDir = Path.resolve(__dirname);
const aws = require("aws-sdk");
import { Express } from "express";
import { Controller, Post } from "@tsed/common";
type MulterFile = Express.Multer.File;
import { MultipartFile } from "@tsed/multipartfiles";
@controller("/session")
export class TeleconsultSessionController implements interfaces.Controller {
@httpPost("/uploadDocuments")
public async uploadDocument( @MultipartFile() file: MulterFile, req: Request, res: Response) {
try {
aws.config.update({ accessKeyId: "AKIAIYKXXXXXXXXX", secretAccessKey: "iMzE0wfryXXXXXXXXXXXXXXXXXXXX" });
aws.config.update({ region: "us-east-1" });
const s3 = new aws.S3();
s3.upload({
"Bucket": "teleconsult-development",
"Key": "image",
"Body": file
}, function (err: any, data: any) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log(data);
}
});
}
catch (err) {
if (err instanceof ValidationException) {
res.status(400);
res.send({ error: err.getMessage() });
} else {
res.status(500);
res.send({ error: err.getMessage() });
}
}
}
作为回应,当我通过邮递员时,我将文件的值设为:
Object {------WebKitFormBoundaryAo1BhVpGaB8uYmsw\r\nContent-Disposition: form-data;名称:""image1"; 文件名="1528114981689_566_28-1-2
【问题讨论】:
-
我建议使用预签名 URL docs.aws.amazon.com/AmazonS3/latest/dev/… 您在后端创建预签名 URL,然后用户将文件直接上传到 AWS