2017-02-16 145 views
0

在Node.js项目中,我必须将文件从计算机传输到服务器。如果文件大小很小(即2mb),我可以发送文件,但如果文件大于此大小,则无法发送文件。这里是我的代码如下:无法使用Node.js中的请求模块传输大型文件

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

回答

0

我同意mscdex的问题是在PHP方面。在将upload_max_filesize从2MB增加到50MB后,它不能正常工作,直到此时我又重新启动了Apache服务器。

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

+0

看来,尽管另一张海报给了你答案,但你转发了同样的东西,并且给自己打了勾。你会考虑给另一张海报接受吗? – halfer

+0

@halfer实际上它只在重启之后才起作用,如果你会看到其他帖子的编辑历史,我已经发布了,但mscdex拒绝了我的编辑。所以我发布了新的答案。即使我已经提出了他的答案。 ..well ..感谢您访问我的个人资料:) – Deep

+0

啊,是的,我发现了微小的差异。通常情况下,堆栈溢出的精神无论如何都会让滴答声消失,但是如果其他海报拒绝了编辑,那么确定。在我看来,他们不应该拒绝编辑,这很好。 – halfer

1

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

+0

你确定? – Deep

+0

在app.use(express.limit(100000));这是如果我们在同一台服务器上传文件的方式。但在我的情况下,要求是不同的,所以我怀疑它应该在节点js方面,因为在PHP上它是50mb大小上传 – Deep

+0

你是如何验证PHP限制的?在你的'actionSavetestvideo()'函数中,你是否尝试在某处输出'ini_get(“upload_max_filesize”)的结果? – mscdex