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文件下载的更多相关文章

  1. JavaScript多文件下载

    对于文件的下载,可以说是一个十分常见的话题,前端的很多项目中都会有这样的需求,比如 highChart 统计图的导出,在线图片编辑中的图片保存,在线代码编辑的代码导出等等.而很多时候,我们只给了一个链 ...

  2. php提供更快的文件下载

    在微博上偶然看到一篇介绍php更快下载文件的方法,其实就是利用web服务器的xsendfile特性,鸟哥的博客中只说了apache的实现方式,我找到了介绍nginx实现方式的文章,整理一下! let' ...

  3. 【SFTP】使用Jsch实现Sftp文件下载-支持断点续传和进程监控

    参考上篇文章: <[SFTP]使用Jsch实现Sftp文件下载-支持断点续传和进程监控>:http://www.cnblogs.com/ssslinppp/p/6248763.html  ...

  4. 开源安卓Http文件下载框架file-downloader的使用

    file-downloader FileDownloader(https://github.com/wlfcolin/file-downloader)是本人开源的一个安卓Http文件下载框架,是根据自 ...

  5. ubuntu 14.04 https 形式安装docker 私有库 harbor

    起始目录/root,root 登陆后,直接在该目录进行下面的命令 下载harbor 预编译包 0.4.5 准备通过域名 reg.server.com 来访问镜像库所以需要在/etc/hosts 文件中 ...

  6. Qt 之 使用 https发送 HTTP请求(使用OPENSSL库)

    一.简述 在使用Qt发送HTTP请求中一般使用的链接都是http://前缀,而有的服务器支持 https://前缀的链接,而Qt本身是支持https的,但是https访问需要用到SSL认证,而QT默认 ...

  7. Android Https

    /** * HttpUrlConnection支持所有Https免验证,不建议使用 * * @throws KeyManagementException * @throws NoSuchAlgorit ...

  8. [iOS 多线程 & 网络 - 2.4] - 大文件下载 (边下边写/暂停恢复下载/压缩解压zip/多线程下载)

    A.需求 边下边写入硬盘 显示下载进度 暂停/恢复 下载 解压文件 多线程下载   B.基本知识 1.小文件下载 如果文件比较小,下载方式会比较多直接用NSData的+ (id)dataWithCon ...

  9. android webview 访问https页面 SslError 处理

    在Android中,WebView可以用来加载http和https网页到本地应用的控件.但是在默认情况下,通过loadUrl(String url)方法,可以顺利loadUrl(“http://www ...

  10. 通过NSURLProtocol拦截HTTP转HTTPS来整合SPDY的记录

    众所周知,iOS 9.0之后苹果引入ATS限制,苹果也推荐尽量不要使用HTTP通讯了,毕竟是很不安全的.而国内各个有(wu)节操的运营商也会经常篡改请求HTTP请求.所以如果可能,在不影响性能的情况下 ...

随机推荐

  1. 视觉SLAM实战(一):RGB-D SLAM V2

    写在前面 首先打个广告.SLAM研究者交流QQ群:254787961.欢迎各路大神和小白前来交流. 看了前面三篇博文之后,是不是有同学要问:博主你扯了那么多有用没用的东西,能不能再给力一点,拿出一个我 ...

  2. java免费空间!最简单的openshift免费空间上传代码教程!和FTP一样简单!

    史上最简单的openshift免费空间上传代码教程!没有之一! 最近因为想弄一个免费的空间,而且最好是Java的空间,找了一大片,jsp的空间少不说,免费的更是寥寥无几. 找了一大推垃圾空间,终于让我 ...

  3. 关于Qt官方下载页的最新变动

    时间过得很快,现在Qt已经迎来了5.10版本,但是当我们去下载页下载对应安装包的时候,已经找不到之前的offline安装包了.你能够看到的只有在线安装包,并且我自己有做过测试,国内的网络基本上没有机会 ...

  4. django 返回json

    django返回json有以下三个版本 from django.http import HttpResponse import json from django.views import View f ...

  5. Oracle 字符集常见字符集及解决方案

    Oracle 字符集常见字符集及解决方案 优先级别:alter session>环境变量>注册表>参数文件 一.查看字符集: 1.查询服务端字符集: select userenv(' ...

  6. 使用InstallUtil安装或卸载服务

    使用InstallUtil安装或卸载服务 一.安装服务: C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe D:\MyServ ...

  7. 南昌网络赛 I. Max answer 单调栈

    Max answer 题目链接 https://nanti.jisuanke.com/t/38228 Describe Alice has a magic array. She suggests th ...

  8. todolist作业涉及知识点

    window.event对象详细介绍 1.event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定 ...

  9. 51nod-迷宫问题(Dijkstra算法)

    关于Dijkstra算法的博文 http://www.cnblogs.com/skywang12345/p/3711512.html#anchor2 Dijkstra算法是一个经典的算法——他是荷兰计 ...

  10. “全栈2019”Java第三十七章:类与字段

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...