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. java8 Lambda表达式的10个例子(转)

    原文:http://jobar.iteye.com/blog/2023477 Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 收藏代码// ...

  2. ssh的配置[待写]

    开机自启:/etc/rc.local /etc/init.d/ssh start 将 /etc/ssh/sshd_confg中PermitRootLogin no 改为yes,重新启动ssh服务.

  3. Eclipse下配置主题颜色

    插件地址  http://eclipse-color-theme.github.com/update 安装之后 下载安装好之后,点击window -> preferences -> Gen ...

  4. 【小梅哥SOPC学习笔记】Altera SOPC嵌入式系统设计教程

    Altera SOPC嵌入式系统设计教程 第1章 概述 SOPC(System On Programmable Chip,可编程的片上系统)是Altera公司提出来的一种灵活.高效的SOC解决方案.它 ...

  5. 洛谷P2387 [NOI2014]魔法森林(lct维护最小生成树)

    题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,…,n,边标号为 1,2,3,…, ...

  6. 安装Python-Windows

    安装Python-Windows 在开始Python编程前,需要先安装Python环境.Python安装包可以到Python的官网下载,官网地址是https://www.python.org/,如果想 ...

  7. [leetcode] 4. Path Sum

    终于到了二叉树.题目如下: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that ...

  8. 常用SQL语句集锦

    MySQL适用 1.如图所示,根据Coord字段内容填充X/Y字段,并调整Coord字段格式(Coord字段原为[Latitude,Longitude]格式,需要将其调整为[Longitude,Lat ...

  9. Nexys4 DDR MIG控制器引脚文件

    目前网上只有ucf文件,vivado不兼容ucf格式 使用c++字符串转换的xdc格式代码 set_property -dict { PACKAGE_PIN R7 IOSTANDARD SSTL18_ ...

  10. 使用django rest framework写POST和GET接口

    https://www.cnblogs.com/Jack-cx/p/9351633.html