簡體   English   中英

使用Multer Node.js將文件下載到服務器時出錯

[英]Error downloading file to server using multer Node.js

我正在嘗試將圖像發送到服務器,但是服務器無法獲取此圖像,我不知道為什么會發生這種情況。

我使用了multer進行了所有設置,但是它不起作用,我不知道我做錯了什么,它們可以幫上忙嗎?

錯誤:文件未定義。

Service.js

const express = require('express');
const consign = require('consign');
const bodyParser = require('body-parser');
const expressValidator = require('express-validator');
const session = require('express-session');
const paginate = require('express-paginate');
const cookieParser = require('cookie-parser');
const multer = require('multer');

// const upload = multer({ dest: 'app/images/' });
const upload = multer({ dest: 'uploads/' });


const app = express();

app.set('view engine', 'ejs');
app.set('views', './app/views');

app.use(express.static('./app/public'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(upload.single('fileUploadPlease'));

// keep this before all routes that will use pagination
app.use(paginate.middleware(10, 50));

app.use(cookieParser());
app.use(expressValidator());
app.use(session({
  secret: 'asdfasjfasdf',
  resave: false,
  saveUninitialized: true,
  cookie: { expires: new Date(253402300000000) },
}));


consign()
  .include('app/routes')
  .then('config/dbConnection.js')
  .then('app/controllers')
  // .then('app/models')
  .into(app);


module.exports = app;

路線

module.exports = (application) => {
  application.get('/', (req, res) => {

  });

  application.post('/search', (req, res) => {

    console.log(`Here is the file image: ${JSON.stringify(req.file)}`);
  });
};

HTML

<!DOCTYPE HTML>
<html lang="pt-br">
<head>
    <meta charset="UTF-8"/>
    <title>Document</title>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

    <!-- Latest compiled and minified JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

</head>
<body>
<div>
    <form class ="testeMongoose" action= "/" method= "get">
    </form>
    <div id="contain" class="container">
        <div class="col-md-12">
            <div class="card border-default mb-3">
                <form class ="testeMongoose" action= "/search" method= "post">
                    <div class="fileUpload btn btn-primary col-md-4 mb-2">
                        <span>Carrega arquivo xlsx</span>
                        <input name="fileUploadPlease" id="fileUploadPlease" type="file" class="upload" />
                    </div>
                    <div class="form-group ">
                        <div class="col-sm-10">
                            <button type="submit" class="btn btn-primary" id="Import">Enviar</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</body>
</html>

返回req.file =未定義。 我不明白你為什么錯。

您的<form>沒有設置正確的編碼類型:

<form class ="testeMongoose" action= "/search" method= "post" enctype="multipart/form-data">

而且, multer文檔指出: “切勿將multer添加為全局中間件,因為惡意用戶會將文件上傳到您未曾預料到的路由中。”

因此,建議不要使用app.use(upload.single(...))

application.post('/search', upload.single('fileUploadPlease'), (req, res) => { ... })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM