gpt4 book ai didi

node.js - 使用 express-fileupload 上传文件不起作用

转载 作者:行者123 更新时间:2023-12-05 04:49:05 29 4
gpt4 key购买 nike

我正在尝试在 Node js 中使用 express-fileupload ( express-fileupload ) 上传文件。但我还没有成功。

我的 app.js(我的 express 服务器运行的地方)看起来像这样:

const express = require('express');
const exphbs = require('express-handlebars');
const fileUpload = require('express-fileupload');

const app = express();
const port = 5000;

app.use(fileUpload({
debug: true
}));

app.use(express.static('./upload'));

const routes = require('./server/routes/task');
app.use('/', routes);

app.listen(port, () => console.log(`Listening on port ${port}`));

我的 task.js(我的路由所在的位置)如下所示:

const express = require('express');
const router = express.Router();
const taskController = require('../controllers/taskController');

router.post('/admin/fileUpload', taskController.fileUpload);

module.exports = router;

我的 taskController.js(我的路由在这里得到控制)看起来像这样:

exports.fileUpload = (req, res) => {

let sampleFile;
let uploadPath;

if (!req.files || Object.keys(req.files).length === 0) {
res.render('admin', { error: `No files were uploaded!` });
} else {
sampleFile = req.files.sampleFile;
uploadPath = __dirname + '/upload/' + sampleFile.name;
sampleFile.mv(uploadPath, function (err) {
if (err) throw err;
res.render('admin', { alert: `File ${sampleFile.name} successfully uploaded!` });
}
}
}

我的 admin.hbs(我也在使用 express-handlebars)看起来像这样:

<form method="POST" action="/admin/fileUpload">
<h2>Upload File</h2>
<input type="file" enctype="multipart/form-data" name="sampleFile">
<button type="submit">
</form>

因此,当我启动 express 服务器时,我的日志如下所示:

[nodemon] starting `node app.js`
Listening on port 5000
Express-file-upload: Request is not eligible for file upload!

我花了几个小时试图找到问题,但还没有成功。

最佳答案

所以,我花了一段时间才找到我的问题。

我在表单和上传路径中犯了两个小错误。

<form method="POST" action="/admin/fileUpload">
<h2>Upload File</h2>
<input type="file" enctype="multipart/form-data" name="sampleFile">
<button type="submit">
</form>

错了。我在错误的地方添加了“enctype”。它应该在表单中,而不是在输入字段中。

我的表单的解决方案:

<form method="POST" action="/admin/fileUpload" enctype="multipart/form-data">
<h2>Upload File</h2>
<input type="file" name="sampleFile">
<button type="submit">
</form>

我上传路径的解决方法:

代替

uploadPath = __dirname + '/upload/' + sampleFile.name;

我需要这样做

uploadPath = './upload/' + sampleFile.name;

关于node.js - 使用 express-fileupload 上传文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67736072/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com