PHP实现的一个保存远程文件到本地的函数分享

最近遇到了PHP远程图片本地话的问题,查了查手册发现file_get_contents()和file_put_contents()可以解决这个问题。思路很简单,将远程文件读入字符串中,然后按照规则写入指定目录,经测试此法可采集图片、文本、音频文件等,只要你可以想办法得到它们的地址。

先上代码:

代码如下:

/**
 * 保存文件到本地
 * @param 文件路径 $url
 * @param 保存本地路径 $savePath
 * @return string
 */
function downloadFile($url,$savePath='')
{
    $fileName = getUrlFileExt($url);
        $fileName = rand(0,1000).$fileName;
    $file = file_get_contents($url);
    file_put_contents($savePath.'/'.$fileName,$file);
        return $fileName;
}
 
/**
 * 获取文件扩展名
 * @param 网页URL $url
 * @return string
 */
function getUrlFileExt($url)
{
    $ary = parse_url($url);
    $file = basename($ary['path']);
    $ext = explode('.',$file);
    return $ext[1];
}

示例:

代码如下:

downloadFile("http://blog.jb51.net/wp-content/themes/inove/img/mei.png","/upload/2012/01/")

file_get_contents(path) 函数和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。path是必须的参数,规定要读取的文件。

file_put_contents(file,data) 函数是把一个字符串写入文件中。与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。file是必需参数,规定要写入数据的文件。如果文件不存在,则创建一个新文件。data是要写入的数据,可以是字符串、数组或数据流。

parse_url()则可以抓取分析url的信息,我们这里用它来获取文件的名称

官方给的示例:

代码如下:

$ php -r 'print_r(parse_url("http://invalid_host..name/"));'
Array
(
    [scheme] => http
    [host] => invalid_host..name
    [path] => /
)

(0)

相关推荐

  • 获取远程文件大小的php函数

    复制代码 代码如下: <?php 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,

  • php获取远程文件的内容和大小

    本文实例总结了php获取远程文件的内容和大小的方法.分享给大家供大家参考.具体如下: 1.获取远程文件内容的方法 2.获取远程文件大小的方法 以上就是php获取远程文件的内容和大小函数代码,希望对大家的学习有所帮助.

  • php下载远程文件类(支持断点续传)

    简易使用方法:  复制代码 代码如下: $object = new httpdownload(); $object->set_byfile($file)%N#H#%;//服务器文件名,包括路径 $object->filename = $filename;//下载另存为的文件名 $object->download(); 3.源文件: 复制代码 代码如下: <? class httpdownload { var $data = null; var $data_len = 0; var

  • php带密码功能并下载远程文件保存本地指定目录 修改加强版

    原作者BlueStyle 提示 改进地方有 以前的算法是等文件下载完才计算, 现在这个直接在在获取文件时候就计算大小 加了容错语句 增加了判断目录,没有目录自动创建 把计算文件大小的算法换了个 以前的那个光计算文件大小就7行代码, 现在这个只要两行 转载请保留原作者版权信息,由于作者是政府人员,为不惹麻烦,请保留此段文字完整性 html代码: 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN&qu

  • PHP中通过fopen()函数访问远程文件示例

    使用PHP不仅可以让用户通过浏览器访问服务器端的文件,还可以通过HTTP或FTP等协议访问其他服务器中的文件,可以在大多数需要用文件名作为参数的函数中使用HTTP和FTP URL来代替文件名.使用fopen()函数将指定的文件名与资源绑定到一个流上,如果文件名是"scheme://-"的格式,则被当成一个URL,PHP将搜索协议处理器(也被成为封装协议)来处理此模式. 如果需要远程访问文件,必须在PHP的配置文件中激活"allow_url_fopen"选项,才能使用

  • PHP 网络开发详解之远程文件包含漏洞

    以下代码(Code)实现了根据浏览器地址栏参数的文件名称包含不同文件的功能. 复制代码 代码如下: <?php $file_name = $_GET["filename"]; //获得当前文件名 include("$file_name "); //包含文件 //一些其他操作 ?> 这时,通过在地址栏上指定不同的文件名就可以实现包含不同文件并执行的功能.例如,通过在浏览器上访问http://localhost/test.php?filename=myinc

  • PHP 获取远程文件内容的函数代码

    如下函数: 复制代码 代码如下: <? /** 获取远程文件内容 @param $url 文件http地址 */ function fopen_url($url) { if (function_exists('file_get_contents')) { $file_content = @file_get_contents($url); } elseif (ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))){ $i

  • php下利用curl判断远程文件是否存在的实现代码

    复制代码 代码如下: //判断远程文件 function check_remote_file_exists($url) { $curl = curl_init($url); // 不取回数据 curl_setopt($curl, CURLOPT_NOBODY, true); // 发送请求 $result = curl_exec($curl); $found = false; // 如果请求没有发送失败 if ($result !== false) { // 再检查http响应码是否为200 $

  • PHP 远程文件管理,可以给表格排序,遍历目录,时间排序

    复制代码 代码如下: <?php $rootdir="./"; $spacenum=0; $filenum=0; $allfilesize=0; echo "<h1>文件管理调试测试</h1>"; echo "<a href=''>重置</a>"; readLogDir($rootdir); echo "<hr>"; echo "Total files

  • php获取远程文件内容的函数

    一个简单的php获取远程文件内容的函数代码,兼容性强.直接调用就可以轻松获取远程文件的内容,使用这个函数也可获取图片.代码如下: /** * 读远程内容 * @return string */ function get_url_content($url){ if(function_exists("curl_init")){ $ch = curl_init(); $timeout = 30; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt

  • PHP 获取远程文件大小的3种解决方法

    1.使用file_get_contents() 复制代码 代码如下: <?php$file = file_get_contents($url);echo strlen($file);?> 2. 使用get_headers() 复制代码 代码如下: <?php$header_array = get_headers($url, true);$size = $header_array['Content-Length'];echo $size;?> PS:需要打开allow_url_fop

随机推荐