【发布时间】:2020-10-13 07:58:49
【问题描述】:
我已经将多个不同的(已经检查过的)图像发送到服务器,在 laravel 控制器中我有这个:
//...
if ($request->has('images')) {
$images = [];
foreach ($request->file('images') as $image){
$img = new \App\Image;
$name = Str::slug($validated['name']).'_'.time().'.'.$image->getClientOriginalExtension();
$folder = '/uploads/images/authors/';
$image->storeAs($folder, $name, 'public');
$img->url = $folder.$name;
array_push($images,$img);
}
$author->images()->saveMany($images);
}
//...
然后我查看存储中的目标路径,发现其中一张图像以不同的名称重复多次。
那么问题出在哪里?
【问题讨论】:
-
我想如果你改变这条线,它也会起作用
$img = $folder.$name; -
@sta 但
$img是他们的模型实例,saveMany接受模型实例 -
我有点惊讶你没有比预期更少的图像,因为
time()可能会返回相同的结果,具体取决于循环迭代的速度 -
@lagbox 存储的图片名称不同但内容相同。所以我认为 time() 不是问题。
-
可能是因为循环中的每个文件的文件名可能相同,这意味着只有 1 个文件(最后一个)......每次运行时都会有又添加了 1 个文件(循环中的最后一个),如果每次运行时都使用相同的确切数据,那么所有文件最终都会是相同的内容,因为文件名在循环中没有改变(如果这花了不到一秒钟的时间)因为
time()是基于秒
标签: laravel