zoukankan      html  css  js  c++  java
  • 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("下载成功!");
    }
  • 相关阅读:
    Deployment.yaml文件
    Python 闭包
    github使用方法(一)
    7.Python 正则表达式学习笔记
    kindle网络爬虫续集
    windows下如何快速搭建web.py开发框架
    Python强大的自省简析
    11--Python 备份文件程序
    10- python 网络爬虫分析
    Python基础学习7---异常处理
  • 原文地址:https://www.cnblogs.com/zxf100/p/11250101.html
Copyright © 2011-2022 走看看