我知道,关于这个主题已经有很多案例,但是我看了一遍,找不到想要的。我也注意到很多用户都没有得到他们的答案。 我正在使用Laravel5,我正在尝试上传图片。简单上传,只需保存public / img文件夹中的任何图片。 我查了一些教程并想出了这段代码: 查看表格:
<form action="{{URL::to('adminPanel/addImg/done/'.$projectId)}}" method="get" enctype="multipart/form-data">
<input name="image" type="file" />
<br><br>
<input type="submit" value="Ielādēt"/>
</form>
控制器代码:
public function addImageDone($id) {
$file = Input::file('image');
$destinationPath = public_path().'/img/';
$filename = $id;
$file->move($destinationPath);
}
我一直收到这个错误:
在非对象上调用成员函数move()
我确信,所选文件是图像。
我将不胜感激任何帮助
完成它,主要问题是POST部分!另外文件格式,但这里是正确的代码,添加图像: 形式:
<form method="POST" action="{!! URL::to('adminPanel/addImg/done/'.$projectId) !!}" accept-charset="UTF-8" enctype="multipart/form-data">
<input type="hidden" name="_token" value="{{ csrf_token() }}"> //this part is to make POST method work
<input name="image" type="file" />
<br><br>
<input type="submit" value="Ielādēt"/>
</form>
控制器:
public function addImageDone($id) {
$file = Input::file('image');
$destinationPath = public_path().'/img/';
$file->move($destinationPath, $id.'.png');
}
答案 0 :(得分:1)
我不知道您使用的是Laravel 4.2还是5.0。但..
我建议你使用illuminate / html - Form类。尝试使用POST代替GET上传文件(https://stackoverflow.com/a/15210810/781251,http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1,http://php.net/manual/en/features.file-upload.post-method.php,http://php.net/manual/en/features.file-upload.php)
查看:
{{ Form::open(['url'=>'adminPanel/addImg/done' . $projectId , 'files' => true , 'method' => 'POST']) }}
<label for="file">File</label>
{{ Form::file('file') }}
{{ Form::close() }}
控制器:
public function postImage()
{
if( ( $file = Input::file('file') ) != null && $file->isValid() )
{
$file->move('destination','my_file_new_name.extension');
return Redirect::back();
}
throw new \Exception('Error while upload file');
}
查看:
{!! Form::open(['url'=>'adminPanel/addImg/done' . $projectId , 'files' => true , 'method' => 'POST']) !!}
<label for="file">File</label>
{!! Form::file('file') !!}
{!! Form::close() !!}
控制器:
public function upload(Request $request)
{
if( ( $file = $request->file('file') ) != null && $file->isValid() )
{
$file->move('destination','my_file_new_name.extension');
return redirect()->back();
}
throw new \Exception('Error while upload file');
}
使用新名称创建文件并保留扩展名:
$ext = $file->getClientOriginalExtension();
$newName = str_random(20) . '.' . $ext;
$file->move( storage_path('images') , $newName );
现在,您有一个具有相同扩展名的新名称。要验证您的文件是图像还是..无论如何,请使用Validator。
答案 1 :(得分:0)
试试这个
<form method="POST" action="{!! URL::to('adminPanel/addImg/done/'.$projectId) !!}" accept-charset="UTF-8" enctype="multipart/form-data">
<input name="image" type="file" />
<br><br>
<input type="submit" value="Ielādēt"/>
</form>
获取图像
public function postImage(Request $request) {
$image = $request->file("image");