我正试图上传图像使用multer,通过以下youtube教程。但不能理解为什么它不能正常工作。
密码:
index.html
<body>
<form method="post" action="/upload" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit">
</form>
</body>
server.js
const path = require('path');
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
app.use(express.static(path.join(__dirname,"../public")));
const multer=require('multer');
const storage=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"./Images")
},
filename: (req,file,cb)=>{
console.log(file)
cb(path.extname(file.originalname));
console.log("---")
}
});
const upload=multer({storage:storage});
app.post("/upload",upload.single('image'),(req,res)=>{
console.log("up")
});
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname,'../public/index.html'));
});
server.listen(3000, () => {
console.log('listening on *:3000');
});
记录档:
listening on *:3000
{
fieldname: 'image',
originalname: 'vidLogo.jpg',
encoding: '7bit',
mimetype: 'image/jpeg'
}
---
如您所见,日志一直生成到最后。
服务器抛出内部服务器错误(500)并发送响应文件,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>.jpg</pre>
</body>
</html>
2条答案
按热度按时间ddhy6vgd1#
在此情况下,您可以使用以下命令:
通过上传文件进行高级验证的完整示例
iszxjhcz2#
该错误位于
filename
函数内的第二个回调中,在该函数中,您需要提供null
作为错误,并提供文件名作为值:cb(null, path.extname(file.originalname));
尝试如下更新代码: