[英]React and NodeJS upload file with Multer can`t set filename and termination
我正在 React 和 Node 中构建一个具有上传组件的应用程序。 我设法在 React 中上传文件,使用 multer 将其发送到节点,但它被保存为随机字符串,没有任何终止,只是文件类型。 如果我手动将终端更改为 pdf 表示我可以打开它并查看内容,但我想自动执行此操作。
这是我在 nodejs 中所做的:
var multer = require('multer')
const upload = multer({ dest: "./uploads" });
app.post('/upload', upload.single('file'), function (req, res, next) {
var f = req.file;
console.log(f);
var s = req.body.standard;
console.log(s);
})
在他的文件控制台日志中,它向我打印了文件的详细信息。 我尝试过的事情是改变req.file.filename = req.file.originalname; req.file.path = "./uploads/"+req.file.originalname;
req.file.filename = req.file.originalname; req.file.path = "./uploads/"+req.file.originalname;
以为它可能会更改计算机上的文件名,但没有用。
我尝试过的另一件事是插入此代码:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'public')
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' +file.originalname )
}
})
并使用var upload = multer({ storage: storage }).single('file')
修改const upload
在 post 方法外部和内部,但它不起作用。 它什么都不做。
有人可以向我提供完整的代码,说明我的 js 页面如何使用 post 方法以及在节点项目中设置文件名和文件夹的代码。 提前致谢。 在 inte.net 上我只能找到代码片段,我不知道在哪里集成它们。
谢谢
试试下面的代码
const multer = require('multer')
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'public')
},
filename: function(req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
})
const upload = multer({
storage: storage
})
app.post('/upload', upload.single('file'), function(req, res, next) {
const f = req.file;
console.log(f);
const s = req.body.standard;
console.log(s);
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.