Laravel 5怀疑图像/文件上传

时间:2017-02-13 16:06:46

标签: php laravel laravel-5

我正在为我的公司创建一个小型机构网站,并且会有一个博客(只能从后台发布,仅适用于管理员)。我基本上在图片上传方面遇到了麻烦。我需要将图像链接存储在数据库中,但我不知道如何将上传的图像移动到我的资源文件夹。

这是我第一次在Laravel中处理文件上传,文档与本地存储和云存储有点混淆。我不确定我需要使用哪一个......

我的模板中只有这个:

<label for="image" class="col-md-4 control-label">Upload image</label>
<div class="col-md-6">
    <input id="image" type="file" name="image" required>
</div>

我不知道如何在控制器中处理它..

编辑:

所以,在仔细阅读了文档之后,我想我已经理解了。这是我到目前为止所得到的:

if ($request->hasFile('image') && $request->file('image')->isValid()) {
     $path = $request->photo->store('image');
}  

但现在我收到了这个错误:Call to a member function store() on null

我正在使用public驱动器,因为每个人都可以看到博文。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

试试这个:

$path = $request->image->store('images');

答案 1 :(得分:1)

您可以使用本地存储,云存储例如持久存储到Amazon S3 Bucket。

在您的控制器中,您可以使用

检查和检索文件
if (Input::file('image'))
{
    // file is set.
    // Move the file.
   Input::file('image')->move($destinationPath, $fileName);
}

答案 2 :(得分:0)

storing-uploaded-files

存储上传的文件

要存储上传的文件,通常会使用一个已配置的文件系统。 UploadedFile类有一个store方法,可以将上传的文件移动到您的某个磁盘上,这些磁盘可能是本地文件系统上的一个位置,甚至是Amazon S3等云存储位置。

store方法接受相对于文件系统配置的根目录存储文件的路径。此路径不应包含文件名,因为将自动生成唯一ID作为文件名。

store方法还接受可选的第二个参数,用于存储该文件的磁盘名称。该方法将返回文件相对于磁盘根目录的路径:

$path = $request->photo->store('images');

$path = $request->photo->store('images', 's3');

如果您不想自动生成文件名,可以使用storeAs方法,该方法接受路径,文件名和磁盘名作为其参数:

$path = $request->photo->storeAs('images', 'filename.jpg');

$path = $request->photo->storeAs('images', 'filename.jpg', 's3');