代码部分还可以进行优化,如有不对的地方,欢迎留言,感激不尽。
判断文件路径是否存在,存在那么就继续进行。
/** * @desc 实现文件下载 * @date 2017/7/11 13:15 * @param [string $url] * @author 1245049149@qq.com * @return [resource] */ public function downPhoto($url){ if($this->checkLoad($url)){ Header("Content-type: application/octet-stream"); Header("Content-Transfer-Encoding: binary"); Header("Accept-Ranges: bytes"); //说明:这里的filename生成下载后的文件名,可以进行优化,生成你自己想要的名字,后缀等等 Header("Content-Disposition: attachment; filename=".$url); return readfile($url); }else{ return false; } }
/** * @desc 判断文件路径是否存在 * @date 2017/7/11 13:17 * @param [string $url] * @author 1245049149@qq.com * @return [bool] */ public function checkLoad($url){ $ch = curl_init(); $timeout = 10; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $contents = curl_exec($ch); if (strpos($contents,'200')){ return true; }else{ return false; } }
搞定!