为什么我无法使用以下 NodeJS 代码上传文件?
Why am I NOT able to upload files with the following NodeJS code?
我正在尝试在 NodeJS 中设计一个简单的应用程序,它通过 HTML 表单上传 CSV 文件。
在仔细阅读了关于如何使用 NodeJS 上传文件的 YouTube 教程后,我不明白为什么我的代码无法上传任何文件。在 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);
没有实际读入文件。
我也尝试过使用 postman,这是结果的屏幕截图:
我已尝试 re-watching 视频并仔细按照说明操作,但仍无法解决问题。
请帮助我了解上传失败的原因以及如何解决此问题。
期待您的帮助。
确保您的 html 表单中有 enctype="multipart/form-data"。另外,请确保您已正确设置名称。您也可以粘贴表单的代码吗?
您已将 storage
字段设置为 string
而不是 multer.diskStorage
对象。
改为:const upload = multer({storage: fileStorageEngine});
还要确保 Postman 表单数据中的 key
值设置为 file
,因为您使用的是 upload.single('file')
我正在尝试在 NodeJS 中设计一个简单的应用程序,它通过 HTML 表单上传 CSV 文件。 在仔细阅读了关于如何使用 NodeJS 上传文件的 YouTube 教程后,我不明白为什么我的代码无法上传任何文件。在 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);
没有实际读入文件。
我也尝试过使用 postman,这是结果的屏幕截图:
请帮助我了解上传失败的原因以及如何解决此问题。 期待您的帮助。
确保您的 html 表单中有 enctype="multipart/form-data"。另外,请确保您已正确设置名称。您也可以粘贴表单的代码吗?
您已将 storage
字段设置为 string
而不是 multer.diskStorage
对象。
改为:const upload = multer({storage: fileStorageEngine});
还要确保 Postman 表单数据中的 key
值设置为 file
,因为您使用的是 upload.single('file')