zoukankan      html  css  js  c++  java
  • PHP实现远程下载文件到本地

    PHP实现远程下载文件到本地

    投稿:hebedich 字体:[增加 减小] 类型:转载
     
    经常写采集器发布接口需要使用到远程附件的功能,所以自己写了一个PHP远程下载文件到本地的函数,一般情况下已经够用了,如果服务器支持CURL函数,程序则会优先选择CURL,有需要的小伙伴可以参考下。
     
     

    代码很简单就不多废话了,直接奉上:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
      
    function httpcopy($url, $file="", $timeout=60) {
      $file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file;
      $dir = pathinfo($file,PATHINFO_DIRNAME);
      !is_dir($dir) && @mkdir($dir,0755,true);
      $url = str_replace(" ","%20",$url);
      
      if(function_exists('curl_init')) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $temp = curl_exec($ch);
        if(@file_put_contents($file, $temp) && !curl_error($ch)) {
          return $file;
        } else {
          return false;
        }
      } else {
        $opts = array(
          "http"=>array(
          "method"=>"GET",
          "header"=>"",
          "timeout"=>$timeout)
        );
        $context = stream_context_create($opts);
        if(@copy($url, $file, $context)) {
          //$http_response_header
          return $file;
        } else {
          return false;
        }
      }
    }
    ?>

    再来个远程下载文件到服务器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <form method="post">
    <input name="url" size="50" />
    <input name="submit" type="submit" />
    </form>
    < ?php
    // maximum execution time in seconds
    set_time_limit (24 * 60 * 60);
    if (!isset($_POST['submit'])) die();
    // folder to save downloaded files to. must end with slash
    $destination_folder = 'temp/';
      
    $url = $_POST['url'];
    $newfname = $destination_folder . basename($url);
    $file = fopen ($url, "rb");
    if ($file) {
    $newf = fopen ($newfname, "wb");
    if ($newf)
    while(!feof($file)) {
    fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
    }
    }
    if ($file) {
    fclose($file);
    }
    if ($newf) {
    fclose($newf);
    }
    ?>

    以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 相关阅读:
    Python 编码转换与中文处理
    odoo 基本知识
    odoo xml 时间搜索条件
    在Ubuntu Kylin 16.04 LTS 上源码方式安装odoo
    安装hive
    linux中不同颜色的文件代表什么不同的类型
    PDF神器
    网盘搜索网站
    搭建Hadoop的全分布模式
    虚拟机中操作系统的克隆方法及ip修改及硬件地址修改
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4514339.html
Copyright © 2011-2022 走看看