[英]Need to upload image to AWS S3 server using fastify-multer getting [Function: multerPreHandler] error
const fastify = require('fastify');
const multer = require('fastify-multer');
const server = fastify();
server.register(multer.contentParser);
var AWS = require("aws-sdk");
var s3 = new AWS.S3();
var storage = multer.memoryStorage();
var upload = multer({ storage: storage });
靈感來自羅漢保羅
2.功能將文件上傳到AWS S3存儲桶
uploadInvoice = async (req, res) => {
var files = upload.single("file");
try {
const s3FileURL = ' https://up.s3.amazonaws.com/';
let s3bucket = new AWS.S3({
secretAccessKey: "",
accessKeyId: "",
region: ""
});
const params = {
Bucket: '',
Body: files.buffer,
ContentType: files.mimetype,
ACL: "public-read",
key: files.originalname
};
s3bucket.upload(params, function (err, files) {
if (err) {
res.status(500).json({ error: true, Message: err });
} else {
res.send({ files });
var newFileUploaded = {
description: req.body.description,
fileLink: s3FileURL + files.originalname,
s3_key: params.Key
};
var document = new DOCUMENT(newFileUploaded);
document.save(function (error, newFile) {
if (error) {
throw error;
}
});
}
});
};
我得到的錯誤是 HttpErrorResponse {headers: HttpHeaders, status: 500, statusText: "Internal Server Error", url: "http://localhost:3000/v1/upload/files", ok: false, ...} 錯誤: {statusCode: 500, error: "Internal Server Error", message: "params.Body is required"} headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ} message: "Http failure response for http ://localhost:3000/v1/upload/files: 500 Internal Server Error" name: "HttpErrorResponse" ok: false status: 500 statusText: "Internal Server Error" url: "http://localhost:3000/v1/upload /files"原型:HttpResponseBase
在您的 params 中,“key”是小寫的,而在上傳您使用的 params.Key 應該是 params.key
如果您正在使用 fastify,請使用 fs 和 pump 而不是 multer,因為到目前為止,fastify-multer 不能完全用於 AWS S3 上傳
也許您可以嘗試使用multer-s3
。 它也應該與fastify-multer
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.