gpt4 book ai didi

node.js - 尝试将文件加载到服务器时无法发布/上传。穆尔特

转载 作者:太空宇宙 更新时间:2023-11-03 23:13:27 25 4
gpt4 key购买 nike

我正在尝试通过 multer 中间件将文件加载到我的服务器,但服务器回复我消息:无法 POST/upload

我的后端代码是(关于multer和请求):

import multer from 'multer';

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
let storage = multer.diskStorage({
destination: (req, file, cb) =>{
cb(null, './uploads')
},
filename: (req, file, cb) => {
cb(null, file.fieldname + '-' + Date.now())
}
})

let upload = multer({ storage: storage }).single('file');

app.post('/upload', (req, res) => {
upload(req, res, (err) =>{
if (err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});

我的前端表单:

<form method="post" encType="multipart/form-data" action="/upload">
<input type="file" name="file" />
<input type="submit" value="Submit" />
</form>

我也尝试通过 Postman 发出请求并收到相同的错误。也许是因为cors政策?请帮忙。

最佳答案

您应该像这样在发布路由的定义中直接将 upload 作为中间件传递

let upload = multer({ storage: storage }).single('file');

app.post('/upload', upload, (req, res) => {
res.end("File is uploaded");
});

upload 是一个中间件,它必须位于 /upload 请求过程中执行的中间件列表中

关于node.js - 尝试将文件加载到服务器时无法发布/上传。穆尔特,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471769/

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