![](/img/trans.png)
[英]“Multipart: Boundary not found”: File upload issue with Reactjs, Express, Multer and S3
[英]Upload a file to S3 via express, using Multer?
我有一个通过“/products”路由接受表单的快递服务器。 该表单具有多个文本元素和一个图像元素。 最终目标是从传入请求中提取图像,上传到 AWS S3,然后将图像的位置 + 其他文本传输到我的 MySql 数据库。 我目前一直在使用 Postman 发送请求
目前,一个长的纯文本文件被 Multer 存储在我的“temp/”文件中,然后被删除。 当我在 AWS 上查看图像时,图像不存在,并且我有一个正在记录的“八位字节流”。 有任何想法吗?
我一直在使用本教程(以及无数其他来源)来尝试实现我想要的目标,如果它有帮助的话: https://medium.com/@otoloye/uploading-files-to-aws-s3-using-nodejs- multer-mongodb-and-postman-part-1-de790b8131d4
产品控制器.js
const createProduct = (req, res) => {
const fs = require('fs');
const aws = require('aws-sdk');
const pool = require('../../lib/db');
const moment = require('moment');
aws.config.setPromisesDependency();
aws.config.update({
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
region: process.env.REGION
});
const s3 = new aws.S3();
console.log(req)
const params = {
ACL: 'public-read',
Bucket: process.env.BUCKET_NAME,
Body: fs.createReadStream(req.file.path),
Key: `products/${Date.now()}`
};
s3.upload(params, (err, data) => {
if (err) {
console.log('An error occured whilst uploading the picture',err)
};
if (data){
fs.unlinkSync(req.file.path);
const locationUrl = data.Location;
pool.query(`INSERT INTO products (productName,tagLine,productDescript,category,subCategory,pricePerUnit,minOrder,maxOrder,leadTime,sellerId,sellerName,mainImage,createdOn)
VALUES(
${req.body.productName},
${req.body.tagLine},
${req.body.productDescript},
${req.body.category},
${req.body.subCategory},
${req.body.pricePerUnit},
${req.body.minOrder},
${req.body.maxOrder},
${req.body.leadTime},
${req.body.sellerId},
${req.body.sellerName},
${locationUrl},
${moment(Date.now()).format('YYYY-MM-DD HH:mm:ss')}
)`, (req, res, next) => {
if (err){
console.log('error when trying to connect to database', err)
} else {
console.log(res);
}
}
)
}
});
};
module.exports = {createProduct}
产品.js
const express = require('express');
const productsRouter = express.Router();
const multer = require('multer');
const upload = multer({ dest: 'temp/'})
const { createProduct } = require('../controllers/productController');
productsRouter.post('/', upload.single('mainImage'), createProduct);
module.exports = productsRouter;
[...] 但我无法让文件的路径显示在我的参数 object 的正文中,以便可以将其传输到 AWS。
文件路径实际上不会包含在req.body
中。 Multer 添加了一个包含该信息的req.file
object:
const createProduct = (req, res) => {
var filePath = req.file.path;
// [...]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.