首页 > 解决方案 > 无法将文件上传到 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;
  }
}

标签: javascriptnode.jsexpressvisual-studio-code

解决方案


你能看一下express-fileupload的例子吗

我认为这可能是由于 encType 标签或检查文件是否存在。


推荐阅读