2017-02-16 28 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