2016-10-24 36 views
1

嘗試上傳文件後更新我的要求:(Laravel 5.3)laravel變更請求後上傳

$path = Storage::disk('s3')->putFile($destination, $request->file($name)); // works $request->merge(array($name => $path)); // doesn't work $myModel->update($request->all())

我知道我不能被串在我的要求替換文件,所以怎麼了我應該這樣做?

在電視上看到,但共同的很多帖子,一定比一個更簡單的方法:

$res = $request->except($myInputFileName) // turn it into array $res[$myInputFileName] = $path

任何漂亮的解決方案嗎?

編輯:不是現在:與要求的工作作爲一個數組

回答

0

只是這樣做:

$request[$name] = $path; 

要使用$name作爲列名,所以也許要保存$name但我懷疑,和$path列名爲file_namefile_path例如?然後執行以下操作:

$request['name'] = $name; 
$request['path'] = $path; 

可以隨後入住$request內容有:

dd($request->all()); 
+0

如果只!但不工作:'( –

+0

@ r.flipo,什麼都不起作用?你得到任何錯誤? –

+0

不能,但正如我在我的文章中所說的,你不能在請求字符串中更改請求文件。不改變我的請求 –

2

爲什麼不乾脆試試這個

$inputData = $request->all(); 
$path = Storage::disk('s3')->putFile($destination, $request->file($name)); 
$inputData[$name] = $path; 
$myModel->update($inputData); 
+0

是的,我知道我可以這樣通過在數組中轉動我的請求(如我在我的帖子中說的) 我只是認爲有一個更好的方法:像其中我的文件輸入的路徑名會自動改變 –

+0

@ r.flipo,當你這樣做時,你使用了很多額外的內存,因爲你複製了Request對象中幾乎所有的請求數據。 –

+0

無論如何,我將不得不$ $ request-> all()tu更新我的模型 –