使用 multer returns 空数组在 express js 上上传多个文件
Multiple file upload on express js with multer returns empty array
我正在使用 express js 在 Glitch 上构建一个应用程序,它需要用户上传多个文件。这是我的代码:
var express = require('express');
var cors= require('cors');
var bodyParser= require('body-parser');
var contexts= require('./contexts');
var path= require('path');
var fileUpload= require('express-fileupload');
var multer= require('multer');
var upload = multer();
var app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(fileUpload());
app.set('view engine', 'ejs');
app.set('views', 'views');
app.use(express.static('views/'));
//here express-fileuploads works fine
app.post('/getcontexts', function (req,res) {
var context=contexts.get(req.files.file.data.toString());
res.render('rast', {length: context.length, content : context});
});
//this is when I get an empty array
app.post('/getrast', upload.array('rastfiles'), function (req, res) {
res.json({data: req.files});
});
var listener = app.listen(process.env.PORT, function () {
console.log('SERVER STARTED ON PORT ' + listener.address().port);
});
这是我使用的 ejs 表单:
<form action="/getrast" method="POST" enctype="multipart/form-data">
<label for="rastfiles">Please select your Rast genome files with .txt extension</label>
<br>
<input type="file" id="file" name="rastfiles" class="inputFile" multiple>
<br>
<input type="submit" value="Run" id="sub">
</form>
我已经使用 express-fileupload 上传了一个文件,而且效果很好。但是,当我使用 multer 上传多个文件时,我在将 req,files 记录到控制台时得到了空数组。知道为什么会这样吗?
非常感谢任何帮助。谢谢!
来自多个文档:
Multer accepts an options object, the most basic of which is the dest
property, which tells Multer where to upload the files. In case you
omit the options object, the files will be kept in memory and never
written to disk.
这意味着您至少需要定义 dest
选项:
var upload = multer({ dest: 'uploads/' });
multer 不工作的原因是因为 express-fileupload 已经被用作文件上传的中间件,所以注释掉这一行:
app.use(fileUpload())
为我解决了问题。
我正在使用 express js 在 Glitch 上构建一个应用程序,它需要用户上传多个文件。这是我的代码:
var express = require('express');
var cors= require('cors');
var bodyParser= require('body-parser');
var contexts= require('./contexts');
var path= require('path');
var fileUpload= require('express-fileupload');
var multer= require('multer');
var upload = multer();
var app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(fileUpload());
app.set('view engine', 'ejs');
app.set('views', 'views');
app.use(express.static('views/'));
//here express-fileuploads works fine
app.post('/getcontexts', function (req,res) {
var context=contexts.get(req.files.file.data.toString());
res.render('rast', {length: context.length, content : context});
});
//this is when I get an empty array
app.post('/getrast', upload.array('rastfiles'), function (req, res) {
res.json({data: req.files});
});
var listener = app.listen(process.env.PORT, function () {
console.log('SERVER STARTED ON PORT ' + listener.address().port);
});
这是我使用的 ejs 表单:
<form action="/getrast" method="POST" enctype="multipart/form-data">
<label for="rastfiles">Please select your Rast genome files with .txt extension</label>
<br>
<input type="file" id="file" name="rastfiles" class="inputFile" multiple>
<br>
<input type="submit" value="Run" id="sub">
</form>
我已经使用 express-fileupload 上传了一个文件,而且效果很好。但是,当我使用 multer 上传多个文件时,我在将 req,files 记录到控制台时得到了空数组。知道为什么会这样吗?
非常感谢任何帮助。谢谢!
来自多个文档:
Multer accepts an options object, the most basic of which is the dest property, which tells Multer where to upload the files. In case you omit the options object, the files will be kept in memory and never written to disk.
这意味着您至少需要定义 dest
选项:
var upload = multer({ dest: 'uploads/' });
multer 不工作的原因是因为 express-fileupload 已经被用作文件上传的中间件,所以注释掉这一行:
app.use(fileUpload())
为我解决了问题。