|
|
php实现下载图片的方法:1、使用“file_get_contents”实现下载图片;2、通过使用CURL实现下载图片;3、通过使用fopen实现下载图片即可。
PHP下载远程图片的几种方法总结
本文演示3个从远程URL下载图片,并保存到本地文件中的方法,包括file_get_contents,curl和fopen。
1、使用file_get_contents
- function dlfile($file_url, $save_to)
- {
- $content = file_get_contents($file_url);
- file_put_contents($save_to, $content);
- }
复制代码
2、使用CURL
- function dlfile($file_url, $save_to)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_POST, 0);
- curl_setopt($ch,CURLOPT_URL,$file_url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- $file_content = curl_exec($ch);
- curl_close($ch);
- $downloaded_file = fopen($save_to, 'w');
- fwrite($downloaded_file, $file_content);
- fclose($downloaded_file);
- }
复制代码
3、使用fopen
- function dlfile($file_url, $save_to)
- {
- $in= fopen($file_url, "rb");
- $out= fopen($save_to, "wb");
- while ($chunk = fread($in,8192))
- {
- fwrite($out, $chunk, 8192);
- }
- fclose($in);
- fclose($out);
- }
复制代码
下载与保存完整方法(输出日志那行可删除):
- private function downloadImage($url)
- {
- $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->saveAsImage($url, $file);
- }
- private function saveAsImage($url, $file)
- {
- $filename = pathinfo($url, PATHINFO_BASENAME);
- $dirname = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_DIRNAME);
- $path = 'public' . $dirname . '/';
- $fullpath = 'public' . $dirname . '/' . $filename;
- // 如果目录不存在,则创建
- if(!is_dir($path)) {
- mkdir($path, 0777, true);
- }
- if(file_exists($fullpath)) {
- //$this->output->writeln("【已存在】输出路径" . $fullpath);
- } else {
- $resource = fopen($fullpath, 'a');
- fwrite($resource, $file);
- fclose($resource);
- //$this->output->writeln("【已保存】输出路径" . $fullpath);
- }
- }
复制代码
|
|