【发布时间】:2019-11-13 10:00:13
【问题描述】:
假设我要上传 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>
【问题讨论】:
-
您能否将 time() 更改为其他内容,例如为此使用随机字符串函数并尝试在此之后存储它。我确定这是导致问题的原因。
-
伙伴,非常感谢。将其更改为 rand() 并已修复。
-
不用担心。但 rand 仍然不是解决方案。在某些时候,您必须读取该图像或文件,然后您将永远不知道如何动态捕获该图像,除非您也将 rand 保存到数据库中。因此,请改为使用该产品的增量名称或关联 id 或您为其保存图像的任何 crud 操作。
标签: php laravel image-processing intervention