Multer返回未定义的req.file
Multer returning req.file undefined
我知道这个问题以前被问过很多次,我也尝试过实现这些解决方案,但它们对我来说并不真正有效。
我一直在拼命想办法上传文件并通过Node读取文件大小。我最初尝试使用强大的npm,由于找不到文档,它似乎不再得到维护。我无法处理错误,所以我尝试使用multer。然而,当我尝试记录req.file.时,我反复得到一个未定义的日志
我在下面有server.js代码
var express = require('express');
var formidable = require('formidable');
var multer = require('multer');
var path = require('path');
var upload = multer({dest: './uploads'});
var fs = require('fs');
var app = express();
var PORT = 8080;
app.use(express.static(__dirname+'/views'));
app.set('views', './views');
app.set('view engine', 'jade');
app.get('/', function(req, res){
res.render('index.jade');
});
app.post('/upload', upload.single('Upload'),function(req, res){
console.log(req.file);
});
app.listen(PORT, function(){
console.log('Express listening on port: '+PORT);
});
我的AJAX调用javascript代码在下面提供
$('#upload-butt').on('change', function(){
var file = $(this).get(0).files;
console.log(typeof file);
if(file.length > 0){
var formData = new FormData();
formData.append('Upload', file, file.name);
$.ajax({
url: '/upload',
type: 'POST',
data:formData,
processData:false,
contentType:false,
error: function(jXhr, status){
console.log('error: '+status);
},
success: function(data){
console.log('upload successful: '+data);
}
})
}
});
我的index.jade代码在下面
html
head
link(rel='stylesheet', href='style.css', type='text/css')
title Upload file for shortening
body
h1 Welcome to file metadata service
div(id='upload-button')
form(enctype='multipart/form-data', method='post', action='/upload')
input(name='Upload', type='file', id='upload-butt')
div(id="submit-button")
form(action = '/submit')
button(type="submit", value='Submit', id='submit-butt') Submit
script(src="https://code.jquery.com/jquery-2.2.0.min.js")
script(src="upload.js")
我已经准备好了,所以我会非常感谢任何能在这里帮助我的人!谢谢
您没有正确应用middle。
你可以使用这样的东西:
var express = require('express')
var multer = require('multer')
var app = express()
app.use(multer({ dest: './uploads/'}))
You can access the fields and files in the request object:
console.log(req.body)
console.log(req.files)
因此,类似地,在你的代码中,你必须应用
var express = require('express');
var formidable = require('formidable');
var multer = require('multer');
var path = require('path');
var upload = multer({dest: './uploads'});
var fs = require('fs');
var app = express();
var PORT = 8080;
app.use(upload);
app.use(express.static(__dirname+'/views'));
app.set('views', './views');
app.set('view engine', 'jade');
app.get('/', function(req, res){
res.render('index.jade');
});
app.post('/upload', upload.single('Upload'),function(req, res){
console.log(req.file);
});
app.listen(PORT, function(){
console.log('Express listening on port: '+PORT);
});
您提交的<form>
与图像不同,正确的方法是将所有内容放在一个<form>
中。通过这种方式,您可以提交包含文件的表格。
html
head
link(rel='stylesheet', href='style.css', type='text/css')
title Upload file for shortening
body
h1 Welcome to file metadata service
div(id='upload-button')
form(enctype='multipart/form-data', method='post', action='/upload')
input(name='Upload', type='file', id='upload-butt')
button(type="submit", value='Submit', id='submit-butt') Submit
script(src="https://code.jquery.com/jquery-2.2.0.min.js")
script(src="upload.js")
这应该有效,对于玉石部分。
(关于multer的文档(
相关文章:
- 正在将base64 jpeg从input-type=file上传到服务器
- Expressjs/AngularJS:实现req-flash后出错
- Node.js req.params.locationid not grabbing ID
- 有人能告诉我如何在cent-os中打开扩展名为.dat的FIle吗
- PassportJS/忘记密码:req.user只定义一次
- File Upload事件上下文和javascript
- req.flash()节点表达式4
- 节点.js快速删除 req.body 不起作用
- 使用jQuery File Upload实现所需的用户登录
- 如何防止sails.js在所有视图中传递req对象
- FileEntry.file方法使dataTransferItemList为空
- 在node.jsexpress应用程序中,req.body没有得到<text区域>价值
- 如何从未定义的表单中获取req.body
- '的文件格式和扩展名;file.xls'don't与fileSaver.js匹配
- 有没有什么方法可以通过输入字段(type=file)来找出选择了多少个文件
- FF和Chrome中的 ftp:// 网页不会加载 file:// 脚本
- 将从浏览器创建的文件保存到磁盘 - 不能在 Firefox 上使用新的 File()
- Express Multer 文件上传 req.body 和 req.file 未定义
- SailsJS: POST请求在调用req.param()和req.file()时无法正确解析
- Multer返回未定义的req.file