php的vget方法,ext_lanzou.php
/***********************************************
*蓝筹云存储
* 文件: /include/ext_api.php
* 说明: 自定义第三方扩展类
* 作者: Myxf
* 更新: 2019年5月30日
***********************************************/
/**
* 自定义第三方扩展类
*/
class ext_lanzou {
private $username = ""; //蓝筹云的账号
private $password = ""; //蓝筹云的密码
private $token = null;
//初始化,如果token为空就获取token
function __construct(){
if (empty($this->token)) $this->getToken();
}
//上传文件
public function upfile($path){
$back = array();
$_path = realpath($_SERVER['DOCUMENT_ROOT'].$path);
if (!file_exists(realpath($_SERVER['DOCUMENT_ROOT'].$path))){
$back['code'] = 1;
$back['msg'] = "文件不存在或路径错误";
}else{
$file_name = basename($_path);
//由于蓝筹云不允许上传图片,所以改扩展名上传
$ExtArray = array('jpg','png','gif','bmp');
$Ext = $this->getExt($_path);
if (in_array($Ext,$ExtArray)){
$new_path = str_replace(".".$Ext, ".img", $_path);
rename($_path,$new_path);
$_path = $new_path;
}
$postdata = array();
$postdata['task'] = "1";
$postdata['folder_id'] = "-1";
$postdata['id'] = "WU_FILE_0";
$postdata['name'] = basename($_path);
$postdata['type'] = "application/octet-stream";
$postdata['upload_file'] = "@". $_path;
$backdata = $this->vpost("https://up.woozooo.com/fileup.php",$postdata,array('Cookie: '.$this->token));
$backdata = json_decode($backdata,true);
if (in_array($Ext,$ExtArray)){
//上传完成,将本地文件扩展名修改回来
rename($new_path,str_replace(".img",".".$Ext, $_path));
}
if ($backdata['zt']==1){
$file = array();
$file['id'] = $backdata['text'][0]['id'];
$file['f_id'] = $backdata['text'][0]['f_id'];
$file['name'] = $file_name;
$back['code'] = 0;
$back['msg'] = "文件上传成功";
$back['f_id'] = serialize($file);
$back['path'] = $path;
//先测试下载一次,防止180天没下载自动进入回收站
$this->download($back['f_id']);
}else{
$back['code'] = 1;
$back['msg'] = "文件上传失败";
}
}
return json_encode($back);
}
//获取文件下载地址
public function download($f_id){
$f_id = unserialize($f_id);
$backdata = $this->vget("https://www.lanzous.com/".$f_id['f_id']);
$down_ifr = "https://www.lanzous.com".$this->strCut($backdata,'" src="','" frameborder');
$down_url = $this->vget($down_ifr);
$_t = $this->strCut($down_url,"= '","';",3);
$_k = $this->strCut($down_url,"= '","';",4);
$backdata = $this->vpost("https://www.lanzous.com/ajaxm.php","action=down_process&file_id=".$f_id['id']."&t=".$_t."&k=".$_k."&c=",array('referer: https://www.lanzous.com/fn?f='.$f_id['id'].'&t='.$_t.'&k='.$_k,'cookie: noads=1','content-type: application/x-www-form-urlencoded'));
$backdata = json_decode($backdata,true);
if ($backdata['zt']==1){
$path = $backdata['dom']."/file/".$backdata['url'];
$path = $this->vget($path,array('Accept: */*','Accept-Encoding: gzip, deflate, br','Accept-Language: zh-CN,zh;q=0.9','Cookie: down_ip=1;'),1);
$path = $this->strCut($path,'Location: ',"\r\n");
$path = str_replace("&b=", "&bb=", $path)."&q=".$f_id['name'];
$back['code'] = 0;
$back['msg'] = "下载链接获取成功";
$back['path'] = $path;
}else{
$back['code'] = 1;
$back['msg'] = "下载链接获取失败";
}
return json_encode($back);
}
//删除文件,传入f_id
public function delfile($f_id){
$f_id = unserialize($f_id);
$backdata = $this->vpost("https://pc.woozooo.com/doupload.php","task=6&file_id=".$f_id['id'],array('Cookie: '.$this->token));
$backdata = json_decode($backdata,true);
if ($backdata['zt']==1){
$back['code'] = 0;
$back['msg'] = "文件删除成功";
}else{
$back['code'] = 1;
$back['msg'] = "文件删除失败";
}
return json_encode($back);
}
//使用账号密码自动登录获取token
private function getToken(){
$backdata = $this->vget("https://up.woozooo.com/account.php?action=login&ref=/mydisk.php");
$formhash = $this->strCut($backdata,'formhash" value="','" />');
$postdata = "action=login&task=login&username=".$this->username."&password=".$this->password."&formhash=".$formhash;
$backdata = $this->vpost("https://pc.woozooo.com/account.php",$postdata,"",1);
$this->token = "phpdisk".$this->strCut($backdata,'Set-Cookie: phpdisk','; expires=');
}
//post网络请求
private function vpost($url,$data,$header = "",$head = 0){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, $head);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl);
if (curl_errno($curl)) {
return 'Error';
}
curl_close($curl);
return $tmpInfo;
}
//get网络请求
private function vget($url,$header = "",$head = 0){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, $head);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl);
if (curl_errno($curl)) {
return 'Error';
}
curl_close($curl);
return $tmpInfo;
}
//字符串截取
private function strCut($string,$strstart,$strend,$num = 1){
$v_a=explode($strstart, $string);
$v_a=explode($strend, $v_a[$num]);
return $v_a[0];
}
//获取文件扩展名
private function getExt($file){
return end(explode(".",$file));
}
}
?>
一键复制
编辑
Web IDE
原始数据
按行查看
历史
php的vget方法,ext_lanzou.php相关推荐
- 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群
作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...
- Java面试题大全2021版
一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...
- Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程
参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程.同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers ...
- IDEA中将代码块封装为方法,IDEA代码重构快捷键
IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:
- IDEA自动生成对象所有set方法
idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...
- List元素互换,List元素转换下标,Java Collections.swap()方法实例解析
Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...
- java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解
1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- Java Calendar.add()方法的使用,参数含义。指定时间差。
cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...
最新文章
- python使用matplotlib可视化3D柱状图(3D histogram、三维柱状图、包含三个坐标轴x、y、z)、设置zdir参数为z、改变3d图观察的角度
- 搭建百度unit2.0测试代码(Java)
- mysql 密码忘记了怎么办? [仅msyql8版本]
- VS2005与Device通过ActiveSync连接异常的常见原因
- canvas生成二维码(2)
- 【剑指offer】面试题29:顺时针打印矩阵(Java)
- centos7光盘修复 grub_centos7修复grub2
- 久等了!支付宝集五福活动官宣: 今年又有新玩法
- 12.统计 日志 ip
- python invalid character_python提示invalid character in identifier
- 公众号基本的绑定手机号页面(截取code,手机号正则,验证码倒计时)
- 数据分析——人口变化matplotilb绘图
- TCP与UDP的区别:
- LeetCode刷题笔记 二分查找 局部有序
- WEB安全基础简单总结(有些无序,大佬勿喷)
- 博奥智源科技浅谈医院采购合理用药系统功能详细设计
- 【熬夜猛肝万字博文】学妹问我怎么入门 Javascript,百般盘问下我终于决定贡献出自己的 JavaScript入门笔记(三)
- qt实现程序密钥注册功能,MD5加密+AES加密,并实现一台电脑系统一个密钥
- 黎曼积分并非战无不胜
- 四种比较简单的图像显著性区域特征提取方法原理及实现
热门文章
- 诺维信和科汉森合并获股东批准,将共同创建一家世界一流的发酵公司
- [乡土民间故事_徐苟三传奇]第十二回_歪拐差役苦挑石磨
- 2013年 雷诺 Renault Zoe | 警告信息 “停车: 电力故障危险”
- jQuery便利多个相同的class,点击显示隐藏图标,显示及隐藏其下的内容
- 无法打开编译的html,解决VS在编译的时候无法打开...obj文件的问题
- 怎么开发支付宝扫码收款应用-java 支付宝当面付
- java中的lt;和gt;分别是什么意思
- Phi-divergence
- JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT)
- 中国电子竞技产业研究报告