簡體   English   中英

如何使用laravel 5.1上傳多個圖像並將其名稱存儲在數據庫中?

[英]How to upload multiple images and store their name in database with laravel 5.1?

我已經創建了一個表單,供用戶上傳多個圖像,並將上傳的圖像移動到“上傳”文件夾並將其名稱存儲在數據庫中。 這是我的代碼

public function multiple_upload() {
    $multiupload = new Multiupload();
// getting all of the post data
$files = Input::file('images');
// Making counting of uploaded images
$file_count = count($files);
// start count how many uploaded
$uploadcount = 0;
foreach($files as $file) {
  $rules = array('file' => 'required'); //'required|mimes:png,gif,jpeg,txt,pdf,doc'
  $validator = Validator::make(array('file'=> $file), $rules);
  if($validator->passes()){
    $destinationPath = 'uploads';
    $filename = $file->getClientOriginalName();
    $upload_success = $file->move($destinationPath, $filename);
    $uploadcount ++;
    $multiupload->fileimage = $filename;
    $multiupload->save();
  }
}
if($uploadcount == $file_count){
  Session::flash('success', 'Upload successfully'); 
  return Redirect::to('/');
} 
else {
  return Redirect::to('/')->withInput()->withErrors($validator);
}

}

上傳后,所有圖像均成功移至“上傳”文件夾,但在數據庫中僅存儲一個圖像名稱。 那么如何將所有圖像名稱存儲在數據庫中呢? 請幫助我,謝謝您的幫助。

原因是您在循環中重用了相同的Multiupload實例,只是用下一個文件的名稱覆蓋了保存的名稱。 您應該為每個上傳的文件創建一個新的Multiupload實例。

正如@ edrzej.kurylo所說

您必須foreach($files as $file) {下行添加到foreach($files as $file) {

$multiupload = new Multiupload();

因為您一次又一次地重復使用相同的Multiupload函數。 您必須在每次循環運行時重新初始化模型。

您應該移動$ multiupload = new Multiupload(); 進入foreach循環。

foreach($files as $file) {
   $multiupload = new Multiupload();
}

我將以這種方式使用for循環:

if($request->hasFile('images'){
    $files = $request->file('images');
    for($i=0; $i<count($files); $i++){
        $img = new SampleImage();
        $name = rand().'.'.$files[$i]->getClientOriginalExtension();
        $files[$i]->move('uploads/samples/',$name);
        $img->image_name = $name;
        $img->save();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM