2017-02-16 12 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 большой.

Единственное, что я заметил, что если размер файла большой, то if (!empty($_FILES)){} на стороне php не удался. Поэтому я не думаю, что на стороне PHP есть проблема. Пожалуйста, предложите, что мне там изменить?

ответ

0

Я согласился с mscdex, проблема на стороне PHP. После увеличения upload_max_filesize с 2 МБ до 50 МБ он не работал, до тех пор я снова перезапустил сервер Apache.

В случае перезагрузки сервера Apache он работает отлично.

+0

Кажется, что, хотя другой плакат дал вам ответ, вы отправили то же самое и наградили себя клещей. Не могли бы вы считать, что это приемлемо для другого плаката? – halfer

+0

@halfer В действительности он работал только после перезапуска, если вы увидите историю изменений другого сообщения, я опубликовал в нем, но mscdex отклонил мое редактирование. Поэтому я опубликовал новый ответ. даже я поддержал его ответ. .. хорошо .. спасибо за посещение моего профиля :) – Deep

+0

Ах да, я заметил эту небольшую разницу. Как правило, в духе Stack Overflow давать тик в любом случае, но если другой плакат отклонил ваше редактирование, тогда ОК. На мой взгляд, они не должны были отклонять редактирование - все было в порядке. – halfer

1

Задача : со стороны PHP. The default upload_max_filesize configuration value for PHP is 2MB. Вам нужно будет увеличить это значение, чтобы принимать более крупные загрузки файлов.

+0

вы уверены? – Deep

+0

В app.use (express.limit (100000)); это так, если мы загружаем файл на тот же сервер. Но в моем случае требование отличается, поэтому я сомневаюсь, что он должен быть на стороне узла js, так как на PHP это размер 50 МБ для загрузки – Deep

+0

Как вы проверили предел PHP? В вашей функции 'actionSavetestvideo()' вы пытались вывести результат 'ini_get (" upload_max_filesize ")' где-нибудь? – mscdex