node.js - multer以奇怪的格式保存图像
问题描述
我正在尝试从我的 Express 服务器向我的客户端提供图像,但是 multer 以一种奇怪的格式保存文件,这会在我的 react 应用程序尝试渲染图像时导致问题
multer服务器端代码:
const fileFilter = (req, file, cb) => {
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png'){
// accept a file
cb(null, true);
} else {
// reject a file
cb(new Error('Incorrect file'), false);
}
}
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/');
},
filename: (req, file, cb) => {
cb(null, Date.now() + path.extname(file.originalname))
}
});
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 5 // max 5mb for image size
},
fileFilter: fileFilter
});
router.post('/', upload.single('productImage'), ProductsController.products_create_product);
这段代码成功地在文件/uploads
夹中创建了文件,但是当我将路径保存到数据库时,我得到了这个响应:
邮差
{
"size": 5,
"quantityInStock": 11,
"productImage": "uploads\\2021-03-11T19-18-05.442Zvans-2.jpg",
}
如何更改它以便以这种格式保存图像:/uploads/2021-03-11T19-18-05.442Zvans-2.jpg
解决方案
您只需要像这样修复目标路径:
cb(null, path.join(__dirname, './uploads/'));
对我来说,这是完整的代码块。只需抓住你想要的实际部分:
const multer = require('multer');
const path = require('path');
const appConfigs = require('./../config/app');
module.exports = function (folderName) {
// TODO: console log here and optimize multiple initialization of multer if need
return multer({
storage: multer.diskStorage({
destination: function (req, file, cb) {
const filePath = path.join(__dirname, './../uploads/' + folderName);
cb(null, filePath);
},
filename: function (req, file, cb) {
const extension = file.mimetype.split('/')[1];
const fileName = (new Date().getTime() / 1000 | 0) + '.' + extension;
cb(null, fileName);
}
}),
limits: {
fileSize: 1024 * 1024 * appConfigs.image_max_size // MB
},
fileFilter: (req, file, cb) => {
let valid = (file.mimetype === 'image/jpeg' || file.mimetype === 'image/jpg' || file.mimetype === 'image/png');
cb(null, valid);
},
});
};
推荐阅读
- angular - 在NRWL中的多个应用程序中放置定义文件的位置
- dart - Row RenderFlex overflowed by 76 pixels on the right
- sql-server - SQL Server Express 的 SQL 代理/别名
- python - Convert objects hierarchy from MATLAB to to python
- php - 更新到 v2.6.1 后的 Twig - 未定义索引:vars - form.vars
- git - Sync VSTS git in visual Studio 2015
- python - 根据应用于两个数据框的条件创建第三个数据框
- mongodb - How to $setDifference in array & Object using Mongo DB
- image - 图像的大小与其 base64 表示的大小之间是否存在直接关系?
- permissions - 更改设置后如何检测应用程序是否重新打开?