0

我正在尝试在 NodeJS 中设计一个简单的应用程序,该应用程序通过 HTML 表单上传 CSV 文件。仔细阅读了YouTube上关于如何使用 NodeJS 上传文件的本教程后,我不明白为什么我的代码无法上传任何文件。在 youtube 教程中,我没有超过 6:53 分钟。

在下面找到我的简单代码:

const express = require('express');
const app = express();
const multer = require('multer');    

const fileStorageEngine = multer.diskStorage({
    destination: (req,file,cd)=> {
    cd(null, './uploads')   
    },
    filename: (req,file,cb)=>{
    cb(null, Date.now() + '--' + file.originalname);
    },
});

const upload = multer({storage: 'fileStorageEngine'});

app.get('/', (req,res)=> {
    res.sendFile(__dirname +'/testDir/form.html' );
});

app.post('/uploads', upload.single('file'), (req, res)=> {
    console.log(req.file);
    res.send('Single File Upload Success!');
});
    
app.listen('3600', ()=> console.log('App is listening...')); 

...我的 HTML 表单代码如下所示: 在此处输入图像描述

http://localhost:3600/正确显示

在此处输入图像描述

我可以浏览到我选择的任何文件,然后单击将我定向到的提交按钮:

在此处输入图像描述

根据YouTube在 6:53 分钟,uploads文件夹现在应该包含上传的文件,但是,该文件夹是空的!

此外,终端显示

在此处输入图像描述

...表明console.log(req.file);实际上没有读入任何文件。

我也尝试使用邮递员,这是结果的屏幕截图:

在此处输入图像描述 我尝试重新观看视频并仔细按照说明进行操作,但仍然无法解决问题。

请帮助我了解上传无法正常工作的原因以及如何解决此问题。期待您的帮助。

4

2 回答 2

1

您已将该storage字段设置为 astring而不是multer.diskStorage对象。

将其更改为:const upload = multer({storage: fileStorageEngine});

还要确保keyPostman form-data 中的值设置为file,因为您正在使用upload.single('file')

于 2021-05-11T13:32:38.670 回答
0

确保您的 html 表单中有 enctype="multipart/form-data" 。另外,请确保您已正确设置名称。您也可以粘贴表单的代码吗?

于 2021-05-11T13:31:18.220 回答