laravel中上传文件至远程服务端

随着工作环境的变化,自己的编程语言也发生了相应的变化,之前一直从事java的开发,但现在迫不得已的转为php(php是世界上最好的语言),原先接手的文件上传,一直是通过FastDFS上传至服务器,方便快捷,现在接手的上传有点苦逼,或许是自己对php还不够熟练,应用起来比较费劲,现将详细的laravel中的文件上传记录下来,以便后续使用!!!(转载请标明出处!)

 

public static function uploadFile(Request $request){

 if ($request->isMethod('post')) {//为了安全,还是需要增加一些判断
        $pic = $request->file('file');
        if($pic){
            $file_name = strval(date('Ymd')) . strval(time()) . '.' . substr(strrchr($pic->getClientOriginalName(), '.'), 1);//获取fileName
            $file_path = $pic->getRealPath();//获取真实的上传地址
            $file_folder = '/image/testAddr/' . strval(date('Ymd'));//服务器文件夹
            $type = $_FILES['file']['type'];//获取文件的类型(此处有坑,待会提到)
            $post_data = array(
                "file_name" => $file_name,
                "file" => new \CURLFile($file_path),
                "folder" => $file_folder,
            );
            $url = config('upload.imgUrl') . 'upload/testUpload';//服务器上传的地址
            $res = self::makeRequest_img($url, $post_data);
            if($res){
                return config('upload.image_url').'uploads'.$file_folder.'/'.$file_name;
            }else{
                return '上传失败,请重试!';
            }
        }

    }
}

 

public static function makeRequest_img($url, $param)
{
    try{

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        if (stripos($url, "https://") !== FALSE) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        }

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $param);

        $res = curl_exec($ch);
        $status = curl_getinfo($ch);
        //dd($status) 非常建议在这打印这个$status 
    }catch (\Exception $e){
    }
    curl_close($ch);
    if (intval($status["http_code"]) == 200) {
        return $res;
    } else {
        return FALSE;
    }

 

注:1.现在讲刚才提到的那个“坑”,我本地使用的是lamp环境,在上传的时候应该出于效率考虑,php里面自带的上传文件大小限制为2M,现在我们需要将php.ini中的upload_max_filesize 修改为适当的大小,本人限制20M,之后重启,让文件上传飞起来!

2.暂不支持分片上传和断点续传功能

 

 

 

 

写自己的代码,送给那些曾经瞧不起你的人!

                                           ----------------------lonelykeyboard

                                                                      2019.01.18

你可能感兴趣的:(php)