在社区里找到一个可以http上传的改了下,node代码如下:
var http = require('http');
var fs = require('fs');
var boundaryKey = '----' + new Date().getTime();
var options = {
host: 'localhost', //远端服务器域名
port: 80, //远端服务器端口号
method: 'POST',
path: '/gallery/add', //上传服务路径
};
var req = http.request(options, function (res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('body: ' + chunk);
});
res.on('end', function () {
console.log('res end.');
});
});
req.write(
'--' + boundaryKey + '\r\n' +
'Content-Disposition: form-data; name="img"; filename="unicycle.jpg"\r\n' +
'Content-Type: image/jpeg\r\n\r\n'
);
//设置1M的缓冲区
var fileStream = fs.createReadStream(__dirname + '/unicycle.jpg', {
bufferSize: 1024 * 1024
});
fileStream.pipe(req, {
end: false
});
fileStream.on('end', function () {
req.end('\r\n--' + boundaryKey + '--');
});
python 代码使用这样来获取,
request.files.get("img")
使用node上传,输出python request.file
ImmutableMultiDict([])
使用浏览器form上传的时候是获取到这个:
ImmutableMultiDict([('img', <FileStorage: u'unicycle.jpg' ('image/jpeg')>)])
我尝试了这样上传给node服务器可以上传文件,但是在python中不行。请问哪里有问题吗?