使用 express.js 连接多方的正确方法?
Proper way to use connect-multiparty with express.js?
我正在尝试将文件上传到我的服务器并使用 connect-multiparty
中间件从 post 请求中提取它们。但是,当我在服务器上收到请求时,req.files
和 req.body
对象是空的(不为空,但 node-inspector
显示它们是 Object
,其中没有任何内容.
这是我正在使用的代码:
server.js:
var express = require( "express" );
var app = express();
var server = require( "http" ).Server( app );
var fs = require( "fs" );
var multipart = require('connect-multiparty');
app.use( express.static( "public" ) );
app.use( multipart() );
app.post( "/httpUpload", function( req, res ) {
console.log( "Received post request" );
}
index.html:
<form action="/httpUpload" method="post" enctype="multipart/form-data">
<input type="file" id="uploadFileInput">
<div class="row">
<div class="col-md-6">
<input type="submit">
</div>
</div>
</form>
我在尝试使用 multer
、connect-busboy
和 body-parser
时得到了类似的结果。如果这个解决方案对我有用,我会很高兴,但它没有:http://howtonode.org/really-simple-file-uploads
所以……在我所有失败的尝试中,唯一共同的主题就是我自己。 ;o) 知道我做错了什么吗?
嗯...这不是我问题的完整答案,但是当我更改我的代码以删除表单并通过 jQuery 的 [=11] 发送 post 请求时=] 方法,req.files
对象中有我的数据。 (耸肩)这是我的 js 中使它起作用的代码:
$.ajax( {
url: "/httpUpload",
type: "POST",
processData: false, // important
contentType: false, // important
dataType : "json",
data: formData
} );
这是让我走上正确道路的 post:
File Upload without Form
这是我提取上传文件的方法:
var express = require('express');
var multiparty = require('connect-multiparty'),
multipartyMiddleware = multiparty({ uploadDir: './imagesPath' });
var router = express.Router();
router.post('/', multipartyMiddleware, function(req, res) {
console.log(req.body, req.files);
var file = req.files.file;
console.log(file.name);
console.log(file.type);
res.status(200).send('OK');
});
module.exports = router;
这会将您上传的文件保存到 imagesPath 文件夹
我正在尝试将文件上传到我的服务器并使用 connect-multiparty
中间件从 post 请求中提取它们。但是,当我在服务器上收到请求时,req.files
和 req.body
对象是空的(不为空,但 node-inspector
显示它们是 Object
,其中没有任何内容.
这是我正在使用的代码:
server.js:
var express = require( "express" );
var app = express();
var server = require( "http" ).Server( app );
var fs = require( "fs" );
var multipart = require('connect-multiparty');
app.use( express.static( "public" ) );
app.use( multipart() );
app.post( "/httpUpload", function( req, res ) {
console.log( "Received post request" );
}
index.html:
<form action="/httpUpload" method="post" enctype="multipart/form-data">
<input type="file" id="uploadFileInput">
<div class="row">
<div class="col-md-6">
<input type="submit">
</div>
</div>
</form>
我在尝试使用 multer
、connect-busboy
和 body-parser
时得到了类似的结果。如果这个解决方案对我有用,我会很高兴,但它没有:http://howtonode.org/really-simple-file-uploads
所以……在我所有失败的尝试中,唯一共同的主题就是我自己。 ;o) 知道我做错了什么吗?
嗯...这不是我问题的完整答案,但是当我更改我的代码以删除表单并通过 jQuery 的 [=11] 发送 post 请求时=] 方法,req.files
对象中有我的数据。 (耸肩)这是我的 js 中使它起作用的代码:
$.ajax( {
url: "/httpUpload",
type: "POST",
processData: false, // important
contentType: false, // important
dataType : "json",
data: formData
} );
这是让我走上正确道路的 post: File Upload without Form
这是我提取上传文件的方法:
var express = require('express');
var multiparty = require('connect-multiparty'),
multipartyMiddleware = multiparty({ uploadDir: './imagesPath' });
var router = express.Router();
router.post('/', multipartyMiddleware, function(req, res) {
console.log(req.body, req.files);
var file = req.files.file;
console.log(file.name);
console.log(file.type);
res.status(200).send('OK');
});
module.exports = router;
这会将您上传的文件保存到 imagesPath 文件夹