【问题标题】:Unable to transfer large size file using request module in Node.js无法使用 Node.js 中的请求模块传输大文件
【发布时间】:2017-02-16 10:09:13
【问题描述】:

在 Node.js 项目中,我必须将文件从计算机传输到服务器。如果文件大小较小,即 2mb,我可以发送文件,但如果文件大小超过此大小,则无法发送文件。这是我的代码如下:

var url1 = 'http://beta.xxxxx.com/Xbox/xxxx/index.php/info/xxxxx';
var csvenriched = APPDATApath+'/xxxx/users/'+userId+'/programs/'+programName+'/'+foldername+'/Data_'+tmpstmp+'.csv';

var req = request.post(url1, function (err, resp, body1) {  
    if (err) {
        console.log('REQUEST RESULTS:'+err+resp.statusCode+body1);
        res.send(err); return false;
    } else {
        res.send(body1); return false;
    }
});

var form = req.form();

form.append('file', fs.createReadStream(csvenriched));

在我发送数据的PHP端代码如下:

public function actionSavetestvideo() {
    if (!empty($_FILES)) {
        $path = Yii::$app->basePath.'/testfiles/'.$_FILES['file']['name'];
        if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
            return 'uploaded';
        } else {
            return 'error'.$_FILES["file"]["error"];
        }
    } else {
        return $_FILES;
    }
}

如果我必须在 Node.js 服务器上上传文件,我知道互联网上有答案,但在我的情况下,我必须使用 request 模块将文件从 Node.js 传输到 PHP 服务器。

如果文件很小,但如果 CSV 文件很大,则可以正常工作。

我注意到的一件事是,如果文件大小很大,那么 php 端的 if (!empty($_FILES)){} 会失败。所以我认为PHP方面没有问题。请建议我应该在那里修改什么?

【问题讨论】:

    标签: javascript php node.js node-request filestreams


    【解决方案1】:

    问题在PHP端。 The default upload_max_filesize configuration value for PHP is 2MB。您需要增加该值才能接受更大的文件上传。

    【讨论】:

    • 你确定吗??
    • 在 app.use(express.limit(100000));如果我们在同一台服务器上上传文件,这就是这种方式。但在我的情况下,要求是不同的,所以我怀疑它应该在节点 js 端,因为在 PHP 上它是 50mb 的上传大小
    • 您是如何验证 PHP 限制的?在您的actionSavetestvideo() 函数中,您是否尝试在某处输出ini_get("upload_max_filesize") 的结果?
    • 我已经再次保存并重新启动服务器。重启服务器然后工作。谢谢你的帮助^_^
    【解决方案2】:

    我从 mscdex 同意问题出在 PHP 方面。在将upload_max_filesize 从 2MB 增加到 50MB 后,它无法正常工作,直到那时我再次重新启动了 Apache 服务器。

    在重新启动 Apache 服务器时,它开始正常工作。

    【讨论】:

    • 看来,虽然其他发帖人给了你答案,但你转发了同样的东西,给自己打了勾。你会考虑把它接受给其他海报吗?
    • @halfer 实际上,如果您会看到其他帖子的编辑历史记录,它只有在重新启动后才有效,我已经发布了,但 mscdex 拒绝了我的编辑。所以我发布了新的答案。甚至我也赞成他的回答。 ..好吧..感谢您访问我的个人资料:)
    • 啊,是的,我发现了细微的差别。无论如何,通常都会本着 Stack Overflow 的精神放弃打勾,但如果另一张海报拒绝了您的编辑,那么好吧。在我看来,他们不应该拒绝编辑——这很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多