【发布时间】:2017-12-06 13:47:28
【问题描述】:
我尝试使用存储上传多个文件,所以这是我的代码:
public function store(Request $request)
{
$gallery = new Gallery();
$gallery->name = $request->name;
$gallery->description = $request->description;
$gallery->save();
$path = 'public'.'/'.str_slug($request->name);
Storage::makeDirectory(str_slug($request->name));
$image = new Image();
if ( is_array($request->images)) {
foreach ($request->images as $file) {
$image->gallery_id = $gallery->id;
$image->name = $file->getClientOriginalName();
$image->extension = $file->extension();
$image->save();
Storage::putFileAs($path, $file);
}
} else {
$image->gallery_id = $gallery->id;
$image->name = $request->images->getClientOriginalName();
$image->save();
}
}
我已经这样设置了我的表单:
<div class="form-group">
<label for="images" class="col-md-2 control-label">Images</label>
<div class="col-md-6">
<input type="file" class="form-control" name="images[]" id="images[]" multiple>
</div>
</div>
它给了我这样的错误:
"类型错误:函数 Illuminate\Filesystem\FilesystemAdapter::putFileAs() 的参数太少,2 个传入 E:\laragon\www\blog\vendor\laravel\framework\src\Illuminate\Filesystem\FilesystemManager.php在第 343 行,预计至少有 3 个 ◀"
所以问题是我使用 is_array 检查它是否有多个文件的方式是否正确?第二个什么会导致这个问题?
【问题讨论】:
-
putFileAs需要 3 个参数,而您传递了 2 个参数,请查看 Documentation -
@Ying 要将图片上传到公共文件夹还是存储文件夹?请确认,然后我将在下面添加我的答案。
-
公用文件夹,我尝试输入第三个参数,但似乎我做错了。
-
如果您使用图像干预来保存图像,为什么要使用存储?你为什么要在
foreach内return back()? -
大声笑,是的,你说得对,我从单个图像复制粘贴时忘记移动它。
标签: laravel laravel-5 laravel-storage