这几天给客户写的PHP的火车头发布接口,往往会使用到远程附件功能,昨天在小小文的博客那里看到了一段代码,自己拿来在组合一下,加上了自动判断目录且建立目录的功能,然后添加了完整的注释,以后会经常用到哦!
<?php
function get_file($url, $folder = "./") {
set_time_limit (24 * 60 * 60); // 设置超时时间
$destination_folder = $folder . '/'; // 文件下载保存目录,默认为当前文件目录
if (!is_dir($destination_folder)) { // 判断目录是否存在
mkdirs($destination_folder); // 如果没有就建立目录
}
$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); // 关闭本地文件
}
return true;
}
function mkdirs($path , $mode = "0755") {
if (!is_dir($path)) { // 判断目录是否存在
mkdirs(dirname($path), $mode); // 循环建立目录
mkdir($path, $mode); // 建立目录
}
return true;
}
// 使用示例
echo get_file('http://www.kalvin.cn/index.php');
?>
分享到:
相关推荐
// 文件下载保存目录,默认为当前文件目录 if (!is_dir($destination_folder)) { // 判断目录是否存在 mkdirs($destination_folder); // 如果没有就建立目录 } $newfname = $destination_folder . ba
主要介绍了PHP中通过fopen()函数访问远程文件示例,本文讲解了fopen函数的作用、使用它需要的配置问题、超时问题等内容,并给出了代码实例,需要的朋友可以参考下
以前讲过程关于php判断远程文件是否存在的文章都是利用fopen,sockt,curl函数来实现检查远程文件是否存在,下面我再介绍利用 get_headers来检查远程文件是否存在,感兴趣的朋友可以参考一下。 先来简单了解get_headers...
这里搜集了大量的php中文件操作函数如有文件打开,创建,删除,更变组,读取写文件,文件上传以及打开远程文件,把内容写入文件等实例. 复制代码 代码如下:$fp=fopen(“test.txt”,”r”); //以只读方式打开文件...
/** 获取远程文件内容 @param $url 文件http地址 */ function fopen_url($url) { if (function_exists(‘file_get_contents’)) { $file_content = @file_get_contents($url); } elseif (ini_get(‘allow_...
php读取文件 案例一 复制代码 代码如下: <?php $file = ‘jb51.net.... 注: 因为 PHP 的整数类型是有符号的,并且大多数平台使用 32 位整数,filesize() 函数在碰到大于 2GB 的文件时可能会返回非预期的结果.对于 2GB
PHP有一个配置选项叫allow_url_fopen,该选项默认是有效的。它允许你指向许多类型的资源,并像本地文件一样处理...尽管严重性在级别上要差一点,但在一个标准文件系统函数中使用了被污染数据的话,会有类似的漏洞产生:
像fopen的文件处理函数,接受文件的rul参数(例如:fopen(‘http://www.yoursite.com’,’r’)).),这个功能可以很轻松的访问远程资源,然而,这是一个很重要的安全威胁,禁用这个功能来限制file function是...
使用jq扩展 本文主要介绍PHP解决办法中的第三种,这个方法很少用到,但是感觉又起来还不错, get_headers需要支持 php_openssl支持 查看phpinfo看看是否开启 allow_url_fopen=on 修改php.ini,运行使用远程打开 ...
方法:编辑php.ini,设置allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。如果你使用的是虚拟主机可以考虑用curl函数来代替。curl函数的使用示例:复制代码 代码如下:$ch =...
文件处理函数 1.文件操作. 打开文件: 打开指定的文件时会返回相应的对象,若不存在指定的文件,那麽可能会自动创建这个文件。 resource fopen(string filename,string mode [,int use_include_path][,resource ...
执行的是linux命令行下的命令wget下载远程文件 其中wget命令在本地虚机测试请求http://www.baidu.com时,没有成功,在远程服务器上却可以,考虑时DNS解析的问题,于是直接请求IP成功下载了index.html的文件。 这里只...
php请求远程地址设置超时时间,主要讲解file_get_contents、fopen、curl这三个简单常用函数设置超时时间的方法,一般情况下建议使用curl,性能最好,效率也最高。 1、file_get_contents 请求超时设置 $timeout = ...
中的URL fopen wrappers 是打开的(默认情况下是打开的),就可以使用URL来指定文件的位置从而实现远程文件的调用。 有一点就是使用require()和include()语句时要特别的注意。那就是在被包含的文件中,处理器是按照...
一、涉及到的危险函数〔include(),require()和include_once(),require_once()〕 include() && require()语句:包括并运行指定文件。 这两种结构除了在如何处理失败之外完全一样。include() 产生一个警告而 require()...
用file_get_contents来抓取页面内容不成功,可能是因为有些主机服务商把php的allow_url_fopen选项是关闭了,就是没法直接使用file_get_contents来获取远程web页面的内容。那就是可以使用另外一个函数curl。下面是...
有些主机服务商把php的allow_url_fopen选项是关闭了,就是没法直接使用file_get_contents来获取远程web页面的内容。那就是可以使用另外一个函数curl。下面是file_get_contents和curl两个函数同样功能的不同写法file_...