php tp5 从URL下载文件到本地指定路径
最近在做一个下载从URL地址下载pdf文件,并保存到本地服务器的操作
下面代码不管下载什么都可以套用.
在common/controller/Base.php中添加以下代码(写在公共调用区)
/**
* 下载pdf文件到服务器
*@param url 要下载的url地址
*@param path 保存的路径
@param bh 唯一文件名
*/
public function download_file($url, $path='uploads/baogao',$bh)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$file = curl_exec($ch);
curl_close($ch);
$this->save_file( $file, $path, $bh);
}
/**
*保存文件
/*
private function save_file($file, $path, $bh)
{
//判断文件夹是否存在,不存在则创建文件夹
if(!is_dir($path)){
mkdir($path,0777,true);
}
$resource = fopen($path .'/'.$bh .'.pdf', 'a');//以写的形式打开文件
fwrite($resource, $file);//将资源写入文件
fclose($resource);
}
在index/controller/index.php中写入以下代码(在你想调用的地方调用)
use app\common\controller\Base;
class Index extends Base {
public function get_file()
{
$url = "http://****:8889/report.aspx";//自己获取
$path = $this->params['path'];
$bh = $this->params['bh'];
$this->download_file($url, $path, $bh);
$list['file'] = www.baidu.com .'/'. $path .'/'.$bh .'.pdf';//www.baidu.com换成自己公司的网址
return $list;
}
}
很简单吧,希望对你有帮助.