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请求.所以如果可能,在不影响性能的情况下 ...
随机推荐
- springboot+mongonDB
一.mongonDB基本介绍 什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. Mon ...
- ERROR: from PIL import Image ImportError: No module named PIL
ERROR: from PIL import Image ImportError: No module named PIL 到 http://www.pythonware.com/products/p ...
- route -A inet6 增加下一跳 提示错误 SIOCADDRT: No route to host
1.增加前路由表: 2. route -A inet6 增加下一跳 提示错误 SIOCADDRT: No route to host 3.删除已有的下一条路由表项: 4.再次尝试 route -A i ...
- thinkjs系统服务启动
- .net 委托的简化语法
1. 不需要构造委托对象 ThreadPool.QueueUserWorkItem:通过线程池 public static void WorkItem() { ThreadPool.QueueUser ...
- 简单总结:以设计模式的角度总结Java基本IO流
在总结 Java Basic IO 时,发现 java.io 包的相关类真心不少--.看到一堆"排山倒海"般的类,我想,唯有英雄联盟中小炮的台词才能表现此刻我的心情: 跌倒了没?崩 ...
- 数独高阶技巧入门之六——ALS
在这个系列的第一篇(链及其简单应用)以及第四篇(简单异数链)中已经简单介绍过ALS结构的定义,即n格中存在n+1个不同的候选数 (双值格可视为特殊的ALS结构) .根据数独规则,在组成ALS的候选数 ...
- stderr和stdout(printf、fprintf、sprintf)(转)
本文转自:http://www.cnblogs.com/zhangyabin---acm/p/3203745.html 先区分一下:printf,sprintf,fprintf. 1,printf就是 ...
- 本地连接腾讯云Mysql失败问题
腾讯云主机中MySQL无法远程连接的解决办法 在远程主机上,我开启了 mysql服务,用 phpmyadmin 可以打开,比如说用户名为 root,密码为 123456.不过用 Mysql 客户端远程 ...
- CentOS下Docker与.netcore(二) 之 Dockerfile
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...