python flask request.files.get() 如何获取node http.request 上传?
发布于 6个月前 作者 youqingkui 743 次浏览

在社区里找到一个可以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中不行。请问哪里有问题吗?

回到顶部