我正在与laravel 5.6一起使用HTML表单上传文件,但是在控制器中检索文件时遇到了问题。
当我以这种方式检索它时,它返回OK return $ request;它正在控制器中检索,但不在hasFile()
函数中检索,或者
getClientOriginalExtension()
我搜索了许多网站,但问题仍然存在。我所匹配的所有东西都无法正常工作。
错误:“对成员函数getClientOriginalExtension()的调用为空”
<form action="{{url('/changeProductImage')}}" enctype="multipart/form-data" method="post">
{{csrf_field()}}
<input type="file" name="photo" id="photo" class="btn btn-secondary">
<hr>
<button type="submit" value="upload" class="form-control btn btn-primary btn-fill btn-lg">Upload Image</button>
</form>
Route::post('/changeProductImage','ProductsController@upload');
function upload(Request $request)
{
$image = $request->file('photo');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('images'), $new_name);
return back()->with('success', 'Image Uploaded Successfully');
}
答案 0 :(得分:0)
很难说看这段代码有什么问题。假设您确实是这样发送的(例如,您没有在某处使用AJAX),它应该可以工作。
我该怎么做,请确保在您的控制器中有:
use Illuminate\Http\Request;
仅是为了确保您在控制器中提出的这一要求就是这一行。
还请记住,您可能应该进行一些验证以确保文件确实是您想要的类型,或者至少应该有一些其他逻辑,例如:
function upload(Request $request)
{
if (!$request->hasFile('photo') {
return back()->with('error', 'Missing image!');
}
$image = $request->file('photo');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('images'), $new_name);
return back()->with('success', 'Image Uploaded Successfully');
}
答案 1 :(得分:0)
可能您正在使用此语句 使用Illuminate \ Support \ Facades \ Request;
已安装 使用Illuminate \ Http \ Request;