http-https php文件下载
http:
function httpDownload($url, $path = '', $filename = '', $timeout = 60,$type = 0)
{
if ($url == '') {
return false;
}
//获取远程文件数据
if ($type === 0) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);//最长执行时间
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);//最长等待时间
$file = curl_exec($ch);
curl_close($ch);
}
if ($type === 1) {
ob_start();
readfile($url);
$file = ob_get_contents();
ob_end_clean();
}
if ($type === 2) {
$file = file_get_contents($url);
}
//判断下载的数据 是否为空 下载超时问题
if (empty($file)) {
throw new \Exception("下载错误,无法获取下载文件!");
} //没有指定路径则默认当前路径
if ($path === '') {
$path = "./";
}
//如果命名为空
if ($filename === "") {
$filename = md5($file);
}
//获取后缀名
$ext = substr($url, strrpos($url, '.'));
if ($ext && strlen($ext) < 5) {
$filename .= $ext;
} //防止"/"没有添加
$path = rtrim($path, "/") . "/";
//var_dump($path.$filename);die();
$fp2 = @fopen($path . $filename, 'a'); fwrite($fp2, $file);
fclose($fp2);
//echo "finish";
return $filename;
}
https:
function httpsDownload($url, $path = '', $filename = '', $timeout = 60, $type = 0)
{
if ($url == '') {
return false;
}
//获取远程文件数据
if ($type === 0) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);//最长执行时间
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);//最长等待时间
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false); $file = curl_exec($ch);
curl_close($ch);
}
if ($type === 1) {
ob_start();
readfile($url);
$file = ob_get_contents();
ob_end_clean();
}
if ($type === 2) {
$file = file_get_contents($url);
}
//判断下载的数据 是否为空 下载超时问题
if (empty($file)) {
throw new \Exception("下载错误,无法获取下载文件!");
} //没有指定路径则默认当前路径
if ($path === '') {
$path = "./";
}
//如果命名为空
if ($filename === "") {
$filename = md5($file);
}
//获取后缀名
$ext = substr($url, strrpos($url, '.'));
if ($ext && strlen($ext) < 5) {
$filename .= $ext;
} //防止"/"没有添加
$path = rtrim($path, "/") . "/";
//var_dump($path.$filename);die();
$fp2 = @fopen($path . $filename, 'a'); fwrite($fp2, $file);
fclose($fp2);
//echo "finish";
return $filename;
}
http-https php文件下载的更多相关文章
- JavaScript多文件下载
对于文件的下载,可以说是一个十分常见的话题,前端的很多项目中都会有这样的需求,比如 highChart 统计图的导出,在线图片编辑中的图片保存,在线代码编辑的代码导出等等.而很多时候,我们只给了一个链 ...
- php提供更快的文件下载
在微博上偶然看到一篇介绍php更快下载文件的方法,其实就是利用web服务器的xsendfile特性,鸟哥的博客中只说了apache的实现方式,我找到了介绍nginx实现方式的文章,整理一下! let' ...
- 【SFTP】使用Jsch实现Sftp文件下载-支持断点续传和进程监控
参考上篇文章: <[SFTP]使用Jsch实现Sftp文件下载-支持断点续传和进程监控>:http://www.cnblogs.com/ssslinppp/p/6248763.html ...
- 开源安卓Http文件下载框架file-downloader的使用
file-downloader FileDownloader(https://github.com/wlfcolin/file-downloader)是本人开源的一个安卓Http文件下载框架,是根据自 ...
- ubuntu 14.04 https 形式安装docker 私有库 harbor
起始目录/root,root 登陆后,直接在该目录进行下面的命令 下载harbor 预编译包 0.4.5 准备通过域名 reg.server.com 来访问镜像库所以需要在/etc/hosts 文件中 ...
- Qt 之 使用 https发送 HTTP请求(使用OPENSSL库)
一.简述 在使用Qt发送HTTP请求中一般使用的链接都是http://前缀,而有的服务器支持 https://前缀的链接,而Qt本身是支持https的,但是https访问需要用到SSL认证,而QT默认 ...
- Android Https
/** * HttpUrlConnection支持所有Https免验证,不建议使用 * * @throws KeyManagementException * @throws NoSuchAlgorit ...
- [iOS 多线程 & 网络 - 2.4] - 大文件下载 (边下边写/暂停恢复下载/压缩解压zip/多线程下载)
A.需求 边下边写入硬盘 显示下载进度 暂停/恢复 下载 解压文件 多线程下载 B.基本知识 1.小文件下载 如果文件比较小,下载方式会比较多直接用NSData的+ (id)dataWithCon ...
- android webview 访问https页面 SslError 处理
在Android中,WebView可以用来加载http和https网页到本地应用的控件.但是在默认情况下,通过loadUrl(String url)方法,可以顺利loadUrl(“http://www ...
- 通过NSURLProtocol拦截HTTP转HTTPS来整合SPDY的记录
众所周知,iOS 9.0之后苹果引入ATS限制,苹果也推荐尽量不要使用HTTP通讯了,毕竟是很不安全的.而国内各个有(wu)节操的运营商也会经常篡改请求HTTP请求.所以如果可能,在不影响性能的情况下 ...
随机推荐
- css确定取消 悬浮底部样式 和 金额 后缀
.blockquote-bottom { width: 100%; position: fixed; margin: 0; bottom: 0; left: 0; text-align: center ...
- 项目中遇到的死锁问题: Lock wait timeout exceeded; try restarting transaction
最近项目中频繁出现 Lock wait timeout exceeded; try restarting transaction这个错误,把我们弄得痛苦不堪啊,为了解决问题,上网上找好多资料,终于把 ...
- [GO]使用go语言实现比特币的工作量证明
之前的博文已经实现了区块连的基本的工作原理,但在比特币系统中有一个很重要的概念:工作量证明POW,在比特币系统中它的作用就是在十分钟左右的时间内只有一个有能够记帐并得到奖励 在之前的博文中,区块的哈希 ...
- composer 更新
composer self-update --preview 清除缓存 composer clearcache
- HDU 3363 Ice-sugar Gourd (贪心)
题意:给你一个串,串中有H跟T两种字符,然后切任意刀,使得能把H跟T各自分为原来的一半. 析:由于只有两个字母,那么只要可以分成两份,那么一定有一段是连续的. 代码如下: #include <c ...
- nginx+tomcat实现动静态分离
===============Tomcat 概述: Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache ...
- Rabbimq必备基础之对高级消息队列协议AMQP分析及Rabbitmq本质介绍
MQ的一个产品... [消息队列] 1. MSMQ windows自带的一个服务... [petshop],message存放在文件系统中. 最原始的消息队列... [集群,消息确认,内存化,高可用, ...
- java-设计模式汇总整理
最近,对各种模式做了一个整理,便于后续自用. 1.工厂模式 总结:很好理解,一个接口,2个类实现这个接口,那么可以用“接口 变量=new 接口实现类”的方式调用不同的实现类,调用方式直接使用接口的方法 ...
- mysql数据库使用sql查询数据库大小及表大小
网上查了很多资料,最后发现一个可行的,分享如下: 数据库大小查询: select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') from inform ...
- RobotFramework关键字返回参数
业务关键字[登录]返回参数 调用时直接把return的参数值写在业务关键字的最前面,就可以使用关键字的返回值了