我在 Laravel 中遇到了一个问题,我试图在文件类型的输入上使用 multiple 属性同时添加多个图像:
<input type="file" name="image[]" id="image" multiple class="form-control">
例如,如果我选择 3 张图像并发送它,那么我在 store 方法中返回它:
return $files = $request->file('image');
它向我显示如下:
[
{},
{},
{}
]
并且当访问该对象的任何属性时,它会返回我(根据我访问的位置而有所不同):
D:\xampp\tmp\php698A.tmp
然后我转换为有效路径:
$upload->upload_global($files[0], 'productimage');
它返回给我:
/uploads/productimage/1552657379_1552657379.jpg
到目前为止一切都正确,我想知道的是如何注册所有图像。我已经使用了 for 和 foreach 并且没有一个对我有用,它只保存第一张图像:
为了:
$files = $request->file('image');
for ($i=0; $i < count($files) ; $i++) {
$this->modelo::create([
'title' => $request->title,
'product_id' => base64_decode($request->product_id),
'image' => $upload->upload_global($file, 'productimage'),
'create_uid' => Auth::user()->id,
'write_uid' => Auth::user()->id
]);
}
前锋:
$files = $request->file('image');
foreach($files as $file){
$this->modelo::create([
'title' => $request->title,
'product_id' => base64_decode($request->product_id),
'image' => $upload->upload_global($file, 'productimage'),
'create_uid' => Auth::user()->id,
'write_uid' => Auth::user()->id
]);
}
在这两种情况下,它只保存第一张图像。这意味着它不会循环通过 $i,但它总是根据我选择的图像数量重复上传相同的图像。我怎样才能上传所有的图片?从已经非常感谢了。
你应该这样做: