首页 > 解决方案 > 无法在 Laravel 上上传多张图片

问题描述

假设我要上传 3 张图片 a.jpeg、b.jpeg 和 c.jpeg

我已成功选择要上传的图像。将它们发送到控制器并使用 print_f() 检查它们是否真的发送到控制器。他们是。

然后,当我检查了我的 img 文件夹时,只有 c.jpeg 成功上传,而其余的则没有。

这是什么原因?

// AdminController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Http\Redirect;
use Image;

// Route 
  Route::post('/upload', 'AdminController@store')->name('upload');

// AdminController@store:

    public function store(Request $request){
      if ($request->hasfile('images')) {
        foreach ($request->images as $image) {
          $name = time() . '.' . $image->getClientOriginalExtension();
          print_r($name."<br>"); // to see if they're actually passed.
          Image::make($image)->save(public_path('img/new/'. $name));
        }

      }
      return('done');
    }


    <form action="{{ route('upload') }}" method="post" enctype="multipart/form-data">
      <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" name="images[]" id="exampleInputFile" multiple />
      </div>
      {{ csrf_field() }}
      <button type="submit" class="btn btn-default">Submit</button>
    </form>

标签: phplaravelimage-processingintervention

解决方案


问题是我使用的是time()函数而不是rand()返回随机值的任何类似函数。

所以代码现在应该是这样的:

public function store(Request $request){
  if ($request->hasfile('images')) {
    foreach ($request->images as $image) {
      $name = rand() . '.' . $image->getClientOriginalExtension();
      print_r($name."<br>"); // to see if they're actually passed.
      Image::make($image)->save(public_path('img/new/'. $name));
    }

  }
  return('done');
}

推荐阅读