• 技术文章 >php教程 >php手册

    用php实现远程网络文件下载到服务器

    2016-06-21 08:56:52原创783

    本文主要介绍如何用php程序实现将远程网络文件下载到自己的主机(服务器、虚拟主机)上,当然也提供asp、asp.net的源码给大家参考.

    最近让 Lc. 下载《汪洋中的一条船》这部感人的励志电视剧,为了分享方便,于是我提供一个Godaddy的免费FTP.

    考虑到稳定性和专一性,我想重新开启一个godaddy的免费空间,但是此时已经上传了两集,一共是400多兆.怎么办呢?

    于是乎我想起了之前转移空间时用到的一个php文件,他可以下载远程网络文件到服务器上,也就是只要是可以下载的url,就可以转移到新的服务器上.

    废话不多说,直接亮出将远程网络文件下载到服务器的php源码(测试通过,很好很强大).





    < ?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);
    }
    ?>

    当然还需要展示下asp版本的源码(未测试)

    < %
    function downfilea(d_target, s_target)
    On Error Resume Next
    dim myhttp, objstream
    set myhttp = server.createobject( "MSXML2.XMLHTTP ")
    myhttp.open "GET ", d_target, false
    myhttp.send()
    set objstream = Server.CreateObject( "adodb.stream ")
    objstream.Type = 1
    objstream.Mode = 3
    objstream.Open
    objstream.Write myhttp.responseBody
    objstream.SaveToFile s_target, 2
    if err.number <> 0 then err.Clear
    end function

    downfilea "http://www.abc.com/xxx.rar ", Server.MapPath( "down/xxx.rar ")
    Response.write "ok "
    %>
    还有asp.net版本的源码(未测试)

    using System;
    using System.Net;
    using System.IO;

    class DownloadFile;
    {
    static void Main(string[] args)
    {
    //你的远程文件
    string siteURL="http://www.abc.com/xxx.rar";
    //下载到本地的路径及文件名
    string fileName="c:\\xxx.rar";
    //实例化一个WebClient
    WebClient client=new WebClient();
    //调用WebClient的DownloadFile方法
    client.DownloadFile(siteURL,fileName);
    }
    }

    注意事项:

    1.相关的目录可能需要建立,具体请看源码.比如temp/、down/.

    2.其中php版本的源码是支持自定义url的,但asp、asp.net版本的并没有提供自定义.

    3.在拷贝大文件时,国内估计支持欠佳.因为考虑到程序的超时时间,但在国外支持很好.

    比如Blinux将一个近300M的文件转移到另一个服务器上耗费时间是28秒.这是国内无法想象的.

    最后希望大家反馈下使用效果.



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 远程文件
    上一篇:正则表达式在线检测工具推荐 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP弹出提示框并跳转到新页面即重定向到新页面• 第十节--抽象方法和抽象类 -- Classes and Objects in PHP5 [10]• php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)• php自动跳转中英文页面• PHP实现采集程序原理和简单示例代码
    1/1

    PHP中文网