【问题标题】:Cannot upload file无法上传文件
【发布时间】:2016-05-15 05:37:16
【问题描述】:

我尝试使用 multer File Uploads with Express 4.0,但一直失败 - 我也尝试了许多其他方法,但没有成功。请让我知道我在代码中做错了什么

下面是我的 HTML 表单:

<body>
<h1 align="center">Batches</h1>
<form action="/batch" enctype="multipart/form-data">
<p class="formfield">
<label for="batch">Select Batch&nbsp;&nbsp;</label>
<select name="batch" id="batch">
    <option value="" disabled="disabled" selected="selected">Please select a batch</option>
    <option value="batch1">Batch1</option>
    <option value="batch2">Batch2</option>
    <option value="batch3">Batch3</option>
    <option value="batch4">Batch4</option>
    <option value="batch5">Batch5</option>
</select>
</p>
<br/>
<p>
<label for="binpfile">Batch Input File</label>
<input type="file" id="binpfile" accept=".txt" name="binpfile"/>
</p>
<br/>
<p>
<label for="emailid">E-Mail ID:</label>
<input type="text" id="emailid" name="emailid"><br>
</p>
<br/>
<p class="formfield">
<label for="bparam">Batch Parameters:</label>
<textarea rows="4" cols="50" id="bparam" name="bparam">Enter batch param here...</textarea>
</p>
<br/>
<div class="wrapper">
<input type="submit" value="Submit">
</div>
</form>
</body>
</html>

app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

路由/index.js

var methods = require('../methods/method');
/* GET batch form entry */
router.get('/batch', function(req, res) {
   methods.processbatch(req, res);
});

方法/method.js

var multer = require('multer');
var upload = multer({ dest: './uploads/' });
var exports = module.exports = {};

exports.processbatch = function(req, resp) {
    var bname = req.query['batch'];
    var fname = req.query['binpfile'];
    var emailid = req.query['emailid'];
    var bparam = req.query['bparam'];
    upload.single(fname);
    upload.array(fname);
    upload.fields(fname);
    console.log(req);
    console.log ('User entered ' + bname + ' ' + fname + ' ' + emailid + ' ' + bparam);
    console.dir(req.files);
};

我在我的方法中获得了所有参数,但 req.files 记录为“未定义”并且没有文件存储在我的上传目录中,其 prem 设置为 777(R+W+X)?

【问题讨论】:

    标签: node.js multer


    【解决方案1】:

    使用下面一行

     upload.single("binpfile")
    

    也不需要使用

    upload.single(fname);
    upload.array(fname);
    upload.fields(fname); the
    

    参考: Upload multiple file using multer failed

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-25
      • 2011-10-29
      • 2013-08-24
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多