Необходимо загрузить изображение на сервер AWS S3 с помощью fastify-multer с получением ошибки [Function: multerPreHandler]

  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

   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: https: // localhost: 3000 / v1 / upload / files, ok: false,…} error: {statusCode: 500 , ошибка: внутренняя ошибка сервера, сообщение: params.Body is required} заголовки: HttpHeaders {normalizedNames: Map (0), lazyUpdate: null, lazyInit: ƒ} сообщение: ответ об ошибке HTTP для https: // localhost: 3000 / v1 / upload / files: 500 Имя внутренней ошибки сервера: HttpErrorResponse ok: false status: 500 statusText: Internal Server Error url: https: // localhost: 3000 / v1 / upload / files proto: HttpResponseBase

обновление: Multer на самом деле не работал, в этом случае я использовал fs и pump для загрузки файлов, и это сработало.   —  person baba-voss    schedule 01.10.2020

См. также:  Вставьте новую пару значений ключа внутрь и массива объектов, но значение создается axios.get
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. baba-voss

    В ваших параметрах ключ находится в нижнем регистре, тогда как при загрузке вы используете params.Key, который должен быть params.key

  2. baba-voss

    Используйте fs и pump, а НЕ multer, если вы используете fastify, потому что на данный момент fastify-multer точно не работает с загрузкой AWS S3.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: