当前位置: 首页 > 知识库问答 >
问题:

需要使用fastify multer getting[函数:MulterHandler]将图像上传到AWS S3服务器错误

任宾鸿
2023-03-14
  1. 使用的包
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 bucket的函数

   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,状态:500,状态文本:“内部服务器错误”,url::http://localhost:3000/v1/upload/files“,ok:false,…}错误:{statusCode:500,错误:“内部服务器错误”,消息:“params.Body是必需的”}头:HttpHeaders{normalizedNames:Map(0),lazyUpdate:null,lazyInit:ƒ}消息:“Http失败响应http://localhost:3000/v1/upload/files:500内部服务器错误“名称:“HttpErrorResponse”确定:错误状态:500状态文本:“内部服务器错误”url:http://localhost:3000/v1/upload/files“proto:HttpResponseBase

共有3个答案

宰父俊彦
2023-03-14

也许你可以尝试使用multer-s3。它还应该与Fastif-multer一起工作。

查看multer-s3的链接以获取更多参考和示例,网址为:

https://github.com/anacronw/multer-s3

雷曜灿
2023-03-14

如果您正在使用Fastify,请选择fs和泵,而不是Multer,因为到目前为止,Fastify Multer并不完全适用于AWS S3上传

郤玉书
2023-03-14

在您的参数中,“key”是小写的,而在上载时,您使用的是params。应该是params的键。钥匙

 类似资料:
  • 问题内容: 我想随请求一起发送图像作为参数。我使用下面的代码调用POST请求,但是我不知道如何将图像追加到正文中。 我通过图像选择器获取图像,如下所示: 我的要求如下 我是Swift的新手。我已经通过multipart / form-data看到了这一点,但无法自己实现。我不想将其编码为基本64格式。请帮助我。 问题答案: 我使用以下结构发送图像: 然后在函数中创建如下主体:

  • 问题内容: 我需要即时将画布图像数据上传到服务器(数据库),即,我需要创建一个带有input=file的表单,并在没有任何用户交互的情况下发布图像数据。 问题答案: 您不需要文件输入,只需使用Ajax 获取数据并将其发布到服务器即可。 请参阅MDN文档。 但是即使使用,您也无法在IE中获取图像数据。

  • 但我的观点是,我是靠自己学习的,如果没有解释,初学者很难理解,所以我所要求的只是一个解释,对整个过程的详细解释如果有人很难花时间在这个问题上,因为信不信由你,我发现这是到目前为止最难的话题,因为主要原因是没有关于整个过程的教程,也没有对初学者的解释,如果有人现在能解释概念,对明天将要学习的学生来说会更容易。因此,任何人谁可以解释这详细和如何上传过程的工作和一些步骤,以供参考,将非常感谢。 注意:假

  • 经过一些研究,我发现了一个用于多部分文件上传的开放库。在我的情况下,我想上传一个图像使用PUT请求,其中的图像要么是从画廊或相机选择。以下是我正在使用的资源:1。https://github.com/gotev/android-upload-service2.https://www.simplifiedcoding.net/android-upload-image-to-server/#comme

  • 我想上传图像/文件到服务器使用它的uri使用下面的代码 所以,在这里我的回应是不成功的。API返回我内部服务器错误状态500,但我知道服务器工作良好(我测试了其他应用程序)。另外,文件uri也可以。我是新来的,所以能有人发现我的错误,并详细解释为什么是错误的。

  • 我必须上传从用户首选的应用程序(Cameta,画廊等)选择后的图像文件。我可以在Imageview中显示结果意图为位图。现在我想上传这个图像后,一个按钮将被点击。我用改装来做到这一点。我跟随ImagePicker类将图像收集到我的Imageview中。 正在收集图像代码: 要将图像上载到服务器,我使用改装库 API接口 我的问题是,在将result intent中的Imageview设置为在服务器