Laravel : $request->hasFile() 不工作 调用字符串上的成员函数 getClientOriginalExtension()
Laravel : $request->hasFile() is not working Call to a member function getClientOriginalExtension() on string
我正在使用 laravel 5.6 使用 HTML 表单上传文件,但在控制器中检索文件时遇到问题。
当我用这种方式检索它时 return没问题 return $request;它在控制器中检索但不在 hasFile()
函数中检索或
getClientOriginalExtension()
我搜索了很多网站,但问题仍然存在。所有我都匹配但没有工作。
Error: "Call to a member function getClientOriginalExtension() on null"
Html 表单视图:
<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');
}
看这段代码真的很难说出什么问题。假设你真的像这样发送(例如你不在某处使用 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');
}
可能你正在使用这个语句
使用 Illuminate\Support\Facades\Request;
代替了
使用 Illuminate\Http\Request;
我正在使用 laravel 5.6 使用 HTML 表单上传文件,但在控制器中检索文件时遇到问题。
当我用这种方式检索它时 return没问题 return $request;它在控制器中检索但不在 hasFile()
函数中检索或
getClientOriginalExtension()
我搜索了很多网站,但问题仍然存在。所有我都匹配但没有工作。
Error: "Call to a member function getClientOriginalExtension() on null"
Html 表单视图:
<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');
}
看这段代码真的很难说出什么问题。假设你真的像这样发送(例如你不在某处使用 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');
}
可能你正在使用这个语句 使用 Illuminate\Support\Facades\Request;
代替了 使用 Illuminate\Http\Request;