簡體   English   中英

使用 node.js 將圖像上傳到 s3

[英]Uploading images to s3 using node.js

這是我第一次使用 multer 或 s3,我跟着一個博客,我似乎遇到了一些問題。 在我的 routes.js 中,當我return res.json({'imageUrl': req.file.location})時出現此錯誤: Cannot read property 'location' of undefined當我使用 console.log() req.file它返回不明確的。

我相信我的存儲桶和所有配置都正確,我只是對代碼中發生的事情有點困惑。 如果有人能指出我做錯了什么或有任何建議,我將不勝感激

謝謝!

更新:我可以通過postman成功上傳圖片,但不是我項目中的表格。 我很確定我的問題來自return res.json({'imageUrl': req.file.location})

// uploadController.js


const aws = require("aws-sdk");
const multer = require("multer");
const multerS3 = require("multer-s3");
require("dotenv").config();

aws.config.update({
  secretAccessKey: process.env.SECRETACCESSKEY,
  accessKeyId: process.env.ACCESSKEYID,
  region: "us-west-2",
});
const s3 = new aws.S3();

const fileFilter = (req, file, cb) => {
  if (file.mimetype === "image/jpeg" || file.mimetype === "image/png") {
    cb(null, true);
  } else {
    cb(new Error("Invalid mime type, only JPEG and PNG"), false);
  }
};

const upload = multer({
  fileFilter: fileFilter,
  storage: multerS3({
    s3: s3,
    bucket: "mylocal",
    acl: "public-read",
    metadata: function (req, file, cb) {
      cb(null, { fieldName: "TESTING_META_DATA" });
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString());
    },
  }),
});


module.exports = upload;

 // routes.js

let upload = require('../controllers/uploadController')


router.get("/upload", function (req, res) {
  res.render("upload");
});

const singleUpload = upload.single("image");

router.post("/upload", function (req, res) {
  singleUpload(req, res, function (err) {
    if (err) {
      return res.status(422).send({ errors: "wrong" });
    }
    console.log(req.file); // returns undefined
    return res.json({'imageUrl': req.file.location})
   
  });
});

// upload.ejs

 <form method="POST" enctype="multipart/form-data">
      <input type="file" />
      <button type="submit">upload</button>
    </form>

嘗試 req.files(請在末尾注明 s)而不是 req.file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM