无法使用Node.js中的请求模块传输大型文件

时间:2017-02-16 10:09:14

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

在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方面没有问题。请建议我应该在那里修改什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

开启重启Apache服务器,它开始工作正常。