【问题标题】:Cordova 3.5.0 FileTransfer + NodeJS (multipart/form-data) upload issueCordova 3.5.0 FileTransfer + NodeJS(多部分/表单数据)上传问题
【发布时间】:2014-07-24 22:52:21
【问题描述】:

Cordova 3.5.0,文件传输插件Android js 文件。

  var ft = new FileTransfer();
  var options = new FileUploadOptions();
  options.fileKey="files";
  options.fileName=path.substr(path.lastIndexOf('/')+1);
  options.mimeType="video/mp4";
  options.headers = {Connection: "close"};
  options.chunkedMode = false;
  options.httpMethod = 'POST';

  ft.onprogress = function(progressEvent) {
    if (progressEvent.lengthComputable) {
      loadingStatus.setPercentage(progressEvent.loaded / progressEvent.total);
    } else {
      loadingStatus.increment();
    }
    colsole.log(progressEvent.loaded / progressEvent.total);
  };

  ft.upload(path, uri, win, fail, options);

Node.JS 服务器

app.post('/upload', function(req, res) {
    console.log('upload req:'+util.inspect(req.files));
}

Console.log 为 req.files 返回“未定义”。适用于原生 Android 程序和网络上传。

【问题讨论】:

  • console.dir(req.headers['content-type']); 显示什么?
  • rawHeaders: ['X-Real-IP', '192.168.0.161', 'X-Forwarded-For', '192.168.0.161', 'X-Forwarded-Proto', 'http' , 'Host', '192.168.0.110', 'X-NginX-Proxy', 'true', 'Content-Length', '0', 'Content-Type', 'multipart/form-data;边界=+++++', 'files', 'file:/data/data/com.somevid/cache/Capture.avi', 'Data', 'Test', 'Data', 'param', 'User -Agent', 'Dalvik/1.6.0 (Linux; U; Android 4.4.2; SGH-I897 Build/KVT49L)', 'Accept-Encoding', 'gzip' ], 预告片: {}, rawTrailers: [],
  • Content-Length 是 0?也许这就是为什么你没有在服务器上得到任何东西......
  • 是的,我不完全确定。我选择使用原生安卓。它重量轻且有效。
  • 感谢您查看此内容。当我再次尝试使用 Cordova 时,我会明白为什么内容长度实际上是 0。

标签: node.js file cordova multipartform-data transfer


【解决方案1】:

如果您使用的是 ExpressJs(看起来您正在使用),那么您需要安装 Multer 中间件来处理多部分数据。

https://github.com/expressjs/multer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2019-05-10
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多