繁体   English   中英

使用 Multer 的 React 和 NodeJS 上传文件无法设置文件名和终止

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM