Laravel图片上传返回PHP路径?

时间:2016-03-15 20:45:30

标签: php laravel-5 image-uploading

使用laravel将图像上传到S3,并且在此网站正常工作之前,该网站存在问题。

从表单中返回图片时我得到了:

/Applications/MAMP/tmp/php/php4SKXfX

我的表格是:

{!! Form::model($user, [
    'url' => ['user', $user->username],
    'class' => '',
    'files' => true,
    'method' => 'patch'
]) !!}
    {!! Form::file('profile_image', NULL, ['class' => 'form-control'] ) !!}
    {!! Form::button("Update Profile Image", ['type' => 'submit', 'class' => 'btn btn-success'])!!}
{!! Form::close() !!}

我从班上得到的错误是:

file_get_contents() expects parameter 1 to be a valid path, object given

我之前使用过这个课程,但没有使用我正在制作的这个表格。

我获取图片的方式是:

return $request->file('profile_image');

我哪里错了?

这是S3的上传行:

$image = $request->file('profile_image');

$uploaded = Storage::disk('s3')->put('images/' . $fileName, file_get_contents($image));

2 个答案:

答案 0 :(得分:0)

错误:

file_get_contents() expects parameter 1 to be a valid path, object given

告诉你需要一条路径,而不是一个对象。您正在传递$request->file('profile_image')的结果,Symfony\Component\HttpFoundation\File\UploadedFile$image = $request->file('profile_image'); $uploaded = Storage::disk('s3')->put('images/' . $fileName, file_get_contents($image->getClientOriginalName())); 的实例。

您想要传递文件的路径吗?所以我想你想这样做:

Symfony\Component\HttpFoundation\File\UploadedFile

在此处查看有关处理文件的更多详细信息:

https://laravel.com/docs/5.2/requests#files

和{{1}}

的文档

http://api.symfony.com/2.7/Symfony/Component/HttpFoundation/File/UploadedFile.html#method_getClientOriginalName

答案 1 :(得分:0)

来自docs

  

file方法返回的对象是。的实例   Symfony \ Component \ HttpFoundation \ File \ UploadedFile类,其中   扩展PHP SplFileInfo类并提供各种方法   用于与文件交互

将代码更改为:

$uploaded = Storage::disk('s3')->put('images/' . $fileName, file_get_contents($image->getPath() . '/' . $image->getFilename()));