我有一個表單,其中包括其他信息,用戶可以上傳圖像。我想將路徑存儲在數據庫中的圖像上,並將圖像保存到服務器上的public/img/
文件夾中。 {{ Form::open(['route'=>'pizzas.store', 'files'=>true]) }}
,以便它能夠將文件發佈:Laravel 4 - 文件上傳
的形式使用打開。檢查HTML我有以下內容:
<form method="POST" action="http://mypizza/pizzas"
accept-charset="UTF-8" enctype="multipart/form-data">
我可以POST到我的控制器並從窗體接收所有數據按預期。處理文件的方法如下:
public function store() {
//TODO - Validation
$destinationPath = '';
$filename = '';
if (Input::hasFile('image')) {
$file = Input::file('image');
$destinationPath = '/img/';
$filename = str_random(6) . '_' . $file->getClientOriginalName();
$uploadSuccess = $file->move($destinationPath, $filename);
}
$pizza = Pizza::create(['name' => Input::get('name'),
'price' => Input::get('price'),
'ingredients' => Input::get('ingredients'),
'active' => Input::get('active'),
'path' => $destinationPath . $filename]);
if ($pizza) {
return Redirect::route('pizzas.show', $pizza->id);
}
//TODO - else
}
當我選擇一個文件並提交表單,一切似乎工作,但沒有文件被保存在文件夾/img
。數據庫正確註冊文件路徑和名稱。在if { ...}
塊之後
運行dd($uploadSuccess);
正確的,我得到如下:
object(Symfony\Component\HttpFoundation\File\File)#220 (2) {
["pathName":"SplFileInfo":private]=> string(17) "/img\YZmLw7_2.jpg"
["fileName":"SplFileInfo":private]=> string(12) "YZmLw7_2.jpg" }
我在做什麼錯?
除了從[Reflic]答案,則有必要調整數據庫上的'path'如下:''路徑'=>'img /'。 $ filename]);' –
那是正確的,我已經忘記了這一點。 – Reflic