未定义的变量:请求

时间:2017-01-13 08:36:54

标签: laravel

当我尝试上传文件时,显示错误:

  

未定义的变量:请求

这是我用它的地方: UploadController:

if($request->hasFile('file')){
        $file = $request ->file('file');
        $fileName = $file->getClientOriginalName();
        $destinationPath = config('app.fileDesinationPath').'/'.$fileName;
        $uploads = Storage::put($destinationPath,file_get_contents($file->getRealPath()));

    }
    return redirect()->to('/upload');

这里有什么问题?

5 个答案:

答案 0 :(得分:14)

在您的函数中添加Request $request参数。例如:

public function yourFunction(Request $request)
{
    if($request->hasFile('file')){
        $file = $request ->file('file');
        $fileName = $file->getClientOriginalName();
        $destinationPath = config('app.fileDesinationPath').'/'.$fileName;
        $uploads = Storage::put($destinationPath,file_get_contents($file->getRealPath()));

    }
    return redirect()->to('/upload');
}

请仔细阅读文档:http://laravel.com/docs

您还可以在此处观看Laravel教程:http://laracasts.com

答案 1 :(得分:4)

您还可以使用request()辅助函数:

if(request()->hasFile('file')) {
    ...
}
  

请求函数返回当前请求实例。

答案 2 :(得分:1)

使用Request::hasFile代替$request。示例:

if(Request::hasFile('file')){
    $file = Request::file('file');
    $fileName = $file->getClientOriginalName();
    $destinationPath = config('app.fileDesinationPath').'/'.$fileName;
    $uploads = Storage::put($destinationPath,file_get_contents($file->getRealPath()));

}
return redirect()->to('/upload'); `

答案 3 :(得分:0)

显然你的方法中没有注入$request(我想,你只发布了部分方法)。检查此项并在必要时将其添加为参数。

答案 4 :(得分:0)

要访问$ request变量,您需要将其添加到方法参数

public function myFunction(Request $request)
{ 
   // access $request here
}

为了完成这项工作,您需要添加

use Illuminate\Http\Request;

如果您想在请求中进行验证和授权,您可以创建自己的请求,而不是直接使用Illuminates Request Class

php artisan make:request MyRequest

您将找到并授权方法和部分以返回验证规则。