Laravel PHP:使用大文件大小上传图像会导致getClientOriginalName()'存在' null'

时间:2014-11-14 21:08:10

标签: php laravel-4

我正在使用Laravel PHP,我有一个照片库,允许用户将图像上传到相册。当我上传普通文件大小小于8MB的图像时,它们会上传并保存到相册中。但是,当我尝试上传大于8MB的图像时,我不断收到“调用成员函数getClientOriginalName()on null”错误

为了考虑上传到相册的大型图片,我分别编辑了'nginx.conf'和'php.ini',以便' nginx.conf '中的上一行

client_max_body_size 8M; 

已更改为

client_max_body_size 25M;  

在'php.ini'中,这一行:

upload_max_filesize = 8M

更改为:

upload_max_filesize = 25M

在这两个文件中进行了更改之后,我在Putty中运行了:

sudo service nginx restart
sudo service php5-fpm restart

以下是我上传新照片的控制器:

public function store()
{
    $input = \Input::all();

    $validation = new Validators\Stone_Photo;

        $filename = str_random(4) . \Input::file('photo_path')->getClientOriginalName();
        $destination = "uploads/photos/";
        $upload = \Input::file('photo_path')->move($destination, $filename);

        if( $upload == false )
        {
            return \Redirect::to('home.index')
            ->withInput()
            ->withErrors($validation->errors)
            ->with('message', 'Could not upload picture');
        }

        $this->stone_photo->create($input, $filename);
        return \Redirect::route('show_stone', array('id' => $input['stone_id']));
}  

再一次,8MB以下的照片仍然可以正常上传,但是当我尝试上传9MB或更高的照片时,我不断收到错误“调用成员函数getClientOriginalName()on null”错误,我不知道为什么。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:2)

由于您的控制器操作为store,我猜测您有一个restfull控制器,对于该操作,HTTP方法为POST。如果是这种情况,您需要确保设置post_max_size中的php.ini

post_max_size = 25M

否则,upload_max_filesize的任何POST请求都将覆盖post_max_size {{1}}的值(默认为8MB)。