ubuntu - Express - 多方/强大无法在 Ubuntu 上解析大于 100kb 的文件。根本不调用 Parse 的回调

标签 ubuntu file-upload express formidable

var express = require('express');
var bodyParser = require('body-parser');
var multiparty = require('multiparty');
var formidable = require('formidable');
var app = express();
...
app.use(bodyParser.raw({limit: 1024 * 1024 * 20}));
app.use(bodyParser.text({limit: 1024 * 1024 * 20}));
app.use(bodyParser.json({limit: 1024 * 1024 * 20}));
app.use(bodyParser.urlencoded({ limit: 1024 * 1024 * 20, extended: false }));
...
...

app.put('/fileupload', function(req, res, next){
    console.log('FILE UPLOAD REQUEST');

    var form = new formidable.IncomingForm();
  //var form = new multiparty.Form();
    form.parse(req, function(err, fields, files){
        var file = files.file; 
      //var file = files.file[0]


      /*... Logic to save file to disk...*/
        ...
        console.log('Received new file');
    });
});

此代码能够将文件写入大小小于 70-80kb 的磁盘。但是,当 size 较大时,不会调用 form.parse 的回调函数(!),并且控制台中没有日志。没有错误被抛出。

在我的个人计算机 (OS X) 上,我可以使用来自本地主机的 PUT 请求来编写大文件。当服务器是运行 Ubuntu 14.04 的远程计算机时会出现此问题。

在此问题之前,我在 Ubuntu 服务器中收到“请求实体太大”错误。配置nginx到20Mb后,报错停止。各种 bodyParsers 的 20Mb 限制只是为了表明我尝试了任何配置。我注释掉的多方代码也是如此。 Formidable 和 Multiparty 都不会解析这些文件。

这里发生了什么?如何解析大于 ~80kb 的文件?

最佳答案

我不知道为什么会发生这种情况,但我能够使用 Busboy 传输更大尺寸的文件而不是多方或强大

关于ubuntu - Express - 多方/强大无法在 Ubuntu 上解析大于 100kb 的文件。根本不调用 Parse 的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30739208/

相关文章:

docker - 按镜像名称停止 Docker 容器 - Ubuntu

linux - 我想计算在 C 中调用了多少次系统调用

ubuntu - 通过 apt-get 在 X86 上安装 armhf lib

node.js - 上传图像的 Meteor 安全权限

python - 使用 pycurl 和端口号检索 url 的源代码?

PHP:如何缩短网址+从数据库中获取数据

javascript - 在 Angular.js 中的 FineUploader 回调中更新 ngModel

javascript - 无法在功能后停止快速服务器

node.js - 从 Node API 加载 Web Audio API 中的音频

jquery - 即使 JSON 数据保存在 MongoDB 上,nodeJS 方法也会出错