【问题标题】:How to upload multiple images and store their name in database with laravel 5.1?如何使用 laravel 5.1 上传多张图片并将其名称存储在数据库中?
【发布时间】:2015-07-17 03:49:42
【问题描述】:

我创建了一个表单,用户可以上传多个图像,并将上传的图像移动到“上传”文件夹并将他们的名称存储在数据库中。这是我的代码

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);
}

}

成功上传所有图片后移至“Uploads”文件夹,但在数据库中仅存储一个图片名称。那么如何将所有图像名称存储在数据库中? 请帮助我,谢谢你的帮助。

【问题讨论】:

    标签: image laravel upload


    【解决方案1】:

    原因是您在循环中重用了同一个 Multiupload 实例,只是用下一个文件的名称覆盖了保存的名称。您应该为每个上传的文件创建一个新的 Multiupload 实例。

    【讨论】:

      【解决方案2】:

      正如@edrzej.kurylo 所说

      您必须将以下行添加到 foreach($files as $file) { 内部

      $multiupload = new Multiupload();
      

      因为您一次又一次地重复使用同一个 Multiupload 函数。每次循环运行时,您都必须重新初始化模型。

      【讨论】:

        【解决方案3】:

        你应该移动你的 $multiupload = new Multiupload();进入 foreach 循环。

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

        【讨论】:

          【解决方案4】:

          我会以这种方式使用 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();
              }
          }
          

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-15
          • 1970-01-01
          • 1970-01-01
          • 2017-02-08
          • 1970-01-01
          • 2019-07-26
          • 2015-03-30
          相关资源
          最近更新 更多