php 根据URL下载远程图片、压缩包、pdf等文件到本地

1、此方法可以下载图片、压缩包、pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下

//远程路径,名称,文件后缀
function downImgRar($url,$rename,$ext){
  switch ($ext) {
    case 'jpg':    //下载图片
      $file_path = 'uploads/images/';
      break;
    case 'png':    //下载图片
      $file_path = 'uploads/images/';
      break;
    case 'pdf':    //下载PDF
      $file_path = 'uploads/pdf/';
      break;
    case 'rar':    //下载压缩包
      $file_path = 'uploads/rar/';
      break;
    case 'zip':    //下载压缩包
      $file_path = 'uploads/rar/';
      break;
    default:
      $file_path = 'uploads/files/';
    break;
  }
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
  $rawdata=curl_exec ($ch);
  curl_close ($ch);
  // 使用中文文件名需要转码
  $fp = fopen($file_path.iconv('UTF-8', 'GBK', $rename).".".$ext,'w');
  fwrite($fp, $rawdata);
  fclose($fp);
  // 返回路径
  return $_SERVER['DOCUMENT_ROOT'].$file_path.$rename.".".$ext;
}

2、下载压缩文件,这个只可以下载压缩文件

// 下载压缩包
function downRar($file_path)
{
  $file_name = '/uploads/rar/2009323162920-维C银翘片说明书.rar';
  $file_name = iconv("utf-8","gbk//IGNORE",$file_name); // 特别注意!特别注意!特别注意这里,windows下必须开转码,不然直接文件不存
  $file_path = $_SERVER['DOCUMENT_ROOT'] . $file_name;// 比如windows下这里我的是 "D:/web/public/uploads/rar/2009323162920-维C银翘片说明书.rar"
  //判断如果文件存在,则跳转到下载路径
  if (!file_exists($file_path)) {
    die("文件不存在!");
  }
  $fp = fopen($file_path, "r+") or die('打开文件错误');  //下载文件必须要将文件先打开。写入内存
  $file_size = filesize($file_path);
  //返回的文件流
  Header("Content-type:application/octet-stream");
  //按照字节格式返回
  Header("Accept-Ranges:bytes");
  //返回文件大小
  Header("Accept-Length:" . $file_size);
  //弹出客户端对话框,对应的文件名
  Header("Content-Disposition:attachment;filename=" . substr($file_name, strrpos($file_name, '/') + 1));
  //防止服务器瞬间压力增大,分段读取
  $buffer = 1024;
  while (!feof($fp)) {
    $file_data = fread($fp, $buffer);
    echo $file_data;
  }
  fclose($fp);
  die("下载成功!");
}

总结

以上所述是小编给大家介绍的php 根据URL下载远程图片、压缩包、pdf等文件到本地,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • PHP下载远程图片的几种方法总结

    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($f

  • PHP实现下载远程图片保存到本地的方法

    在使用 PHP 做简单的爬虫的时候,我们经常会遇到需要下载远程图片的需求,所以下面来简单实现这个需求. 1.使用 curl 比如我们有下面这两张图片: $images = [ 'https://dn-laravist.qbox.me/2015-09-22_00-17-06j.png', 'https://dn-laravist.qbox.me/2015-09-23_00-58-03j.png' ]; 第一步,我们可以直接来使用最简单的代码实现: function download($url, $

  • 使用ThinkPHP自带的Http类下载远程图片到本地的实现代码

    Http类在目录ThinkPHP/Lib/ORG/Net下面.接下来看看是如何调用的. 复制代码 代码如下: <?php import("Com.Buyback.QueryAmazon"); import("ORG.Net.Http"); class Image { public static function getImage($isbn) { $bookInformModel = D("bookinform"); $result = $

  • php正则匹配文章中的远程图片地址并下载图片至本地

    使用php的正则表达式来实现: $content = '这里是文章内容,这里插入一张图片测试 <img src="XXXXXXXXXXXXXXXXXXXX">'; $content = stripslashes ( $content ); $img_array = array (); // 匹配所有远程图片 preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png

  • PHP实现的下载远程图片自定义函数分享

    复制代码 代码如下: <?php /**  * PHP下载远程图片到本地  *  * @param $url string 远程文件地址  * @param $filename string 保存后的文件名(为空时则为随机生成的文件名,否则为原文件名)  * @param $fileType array 允许的文件类型  * @param $dirName string 文件保存的路径(路径其余部分根据时间系统自动生成)  * @param $type int 远程获取文件的方式  * @ret

  • php获取远程图片并下载保存到本地的方法分析

    本文实例讲述了php获取远程图片并下载保存到本地的方法.分享给大家供大家参考,具体如下: 远程图片指的是远端服务器上的数据我们可以通过php的许多函数来读取下载了,这里整理了两个可以自动下载远程图片并下载保存到本地的例子. 例1,可以自动识别图片类型然后进行对应的保存 /* *功能:php完美实现下载远程图片保存到本地 *参数:文件url,保存文件目录,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function getImage($url,$save_d

  • php中通过正则表达式下载内容中的远程图片的函数代码

    这段程序其实是属于"小偷程序"的重要部分. 这一段程序只是下载远程图片的那一段而已,程序写的比较简单,大多部分都做了注释. 复制代码 代码如下: if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){ $i=0; //多个文件++ while(list($key ,$v) = each($aliurl[0])){ //

  • php 根据URL下载远程图片、压缩包、pdf等文件到本地

    1.此方法可以下载图片.压缩包.pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下 //远程路径,名称,文件后缀 function downImgRar($url,$rename,$ext){ switch ($ext) { case 'jpg': //下载图片 $file_path = 'uploads/images/'; break; case 'png': //下载图片 $file_path = 'uploads/images/'; break; case 'pdf': //下

  • PHP下载远程图片并保存到本地方法总结

    1.获取远程文件大小及信息的函数 function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){ fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n"); fputs($fp,&qu

  • 详解基于mpvue微信小程序下载远程图片到本地解决思路

    说明 最近有些空余时间开始着手优化我那个吉他自学小助手的微信小程序,其中有一个功能是下载吉他谱到本地,开始以为只是很简单的拿到图片url然后down下来就好了,其实不然...最终通过google解决了这个问题,现在记录一下,以便后续翻阅. 少废话先看东西 演示.gif 流程梳理 获取图片远程地址数组-->遍历拿到图片缓存(临时地址)(wx.getImageInfo)-->保存缓存图片到本地(wx.saveImageToPhotosAlbum) 完整代码 子组件代码逻辑 //子组件downloa

  • 解析php下载远程图片函数 可伪造来路

    gurl 要下载的图片地址$rfurl 来路.如果目标图像做了防盗链设置,可以绕过.$filename 下载图片保存的文件名,相对路径,不要用realpath$gcookie 调整cookie 伪造的cookie$JumpCount 跳转计数$maxtime 最大次数调用方法:DownImageKeep("http://www.baidu.com/img/baidu_jgylogo2.gif","http://baidu.com","a.gif"

  • 用php获取远程图片并把它保存到本地的代码

    <?php function GrabImage($url,$filename="") {   if($url==""):return false;endif; if($filename=="") {     $ext=strrchr($url,".");     if($ext!=".gif" && $ext!=".jpg"):return false;endif

随机推荐