我正在尝试在 Laravel 5.1 中添加个人资料图片上传。我使用了Response
包,但是当我尝试上传图片时出现此错误:
AbstractDecoder.php第302行中的NotReadableException:图像源不可读
这是我的PhotoController:
Intervention/Image
这是我的html表单:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Image;
use Input;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index() {}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create() {}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$img = Image::make($request->file('photo'));
$img->save('image.png');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id) {}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) {}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id) {}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id) {}
}
答案 0 :(得分:12)
在表单标记中添加以下参数:
enctype="multipart/form-data"
在make中改变这个:
$img = Image::make($request->file('photo')->getRealPath());
答案 1 :(得分:3)
这不是要回答OP的问题,而是要回答其他人,他们在这里遇到的问题是不同的上下文。
如果您使用的是storeAs()
之类的文件系统方法,则实际上是从/storage/app/public/
范围内的/public/
上载文件。如果是这样,您将需要运行以下命令:
php artisan storage:link
此命令将创建一个指向/storage
目录下的/public
目录的快捷链接,并且一切正常。
答案 2 :(得分:1)
尝试使用laravel collective,如果使用laravel collective,请确保已将文件检查为true
replyTo
,然后在商店函数中请求您的文件时添加getRealPath(),如{{ Form::open(['route'=>'your-route', 'class'=>'form',**'files'=>true**]) }}
{{ Form::close()}}`