javascript - 无法将文件上传到 Node JS
问题描述
当我评论 app.use(fileUpload) 行时,我在 app.post 上设置的断点会从浏览器中调用。但它遇到了一个错误,说发生了异常:TypeError: Cannot read property 'filetoupload' of undefined
但是,当取消注释 app.use(fileUpload) 语句时,根本不会调用 app.post 处的断点。
因此,不清楚缺少什么。
const express =require('express');
const fileUpload = require('express-fileupload');
const app = express();
app.use(express.static('./public'));
app.use(fileUpload);
app.listen(9000,function() {
console.log('My server is running on port 9000');
})
app.post('/sendFile', function(req, res) {
let sampleFile = req.files.filetoupload;
sampleFile.mv('./Uploads/FirstImage.jpg', function(err) {
if (err)
return res.status(500).send(err);
res.send('File uploaded!');
});
});
HTML页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<meta name="description" content="Test File Upload">
<meta name="keywords" content="Test File Upload">
<meta name="author" content="This and That">
<title>Welcome</title>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<form action="/sendFile" method="POST" name="SendDetails" onsubmit="return validateForm()">
<section id="boxes">
<input type="file" accept="image/*" capture="environment" name='filetoupload' id="useCamera">
<input class = 'buttons' type="submit" value="Submit photo" id='btnGoForIt' style="margin-left:30%">
</section>
<script src = 'home.js'></script>
</form>
</body>
</html>
home.js 包含以下 validateForm() 应该在提交时触发。
function validateForm() {
var x = document.forms["SendDetails"]["filetoupload"].value;
if (x == "") {
alert("No image found to send to Nodejs");
return false;
}
}
解决方案
我认为这可能是由于 encType 标签或检查文件是否存在。
推荐阅读
- ansible - 返回代码作为另一个播放的输入值
- saml - 为什么我的 SAML 服务提供商总是让我进行身份验证?
- bash - 使用 Ancible 完成 kubectl 完成 bash
- http - HTTP 525 握手失败(客户端)
- javascript - sendGrid + firebase 云功能:电子邮件未使用可调用功能发送
- python - 返回不需要的十进制值
- java - 如何为我的 Java 游戏添加流畅的运动?
- raspberry-pi3 - Tesseract 未安装在您的路径中 - Raspbian for Robots (dexter)
- css - Slick js轮播在加载时闪烁
- angular - 为什么这个 *ngIf 不渲染我的段落来检查变量的值?