/***********************************************

*蓝筹云存储

* 文件: /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相关推荐

  1. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  2. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  3. Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程

    参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程.同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers ...

  4. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  5. IDEA自动生成对象所有set方法

    idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...

  6. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

  7. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解

    1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...

  8. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  9. Java Calendar.add()方法的使用,参数含义。指定时间差。

    cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...

最新文章

  1. python使用matplotlib可视化3D柱状图(3D histogram、三维柱状图、包含三个坐标轴x、y、z)、设置zdir参数为z、改变3d图观察的角度
  2. 搭建百度unit2.0测试代码(Java)
  3. mysql 密码忘记了怎么办? [仅msyql8版本]
  4. VS2005与Device通过ActiveSync连接异常的常见原因
  5. canvas生成二维码(2)
  6. 【剑指offer】面试题29:顺时针打印矩阵(Java)
  7. centos7光盘修复 grub_centos7修复grub2
  8. 久等了!支付宝集五福活动官宣: 今年又有新玩法
  9. 12.统计 日志 ip
  10. python invalid character_python提示invalid character in identifier
  11. 公众号基本的绑定手机号页面(截取code,手机号正则,验证码倒计时)
  12. 数据分析——人口变化matplotilb绘图
  13. TCP与UDP的区别:
  14. LeetCode刷题笔记 二分查找 局部有序
  15. WEB安全基础简单总结(有些无序,大佬勿喷)
  16. 博奥智源科技浅谈医院采购合理用药系统功能详细设计
  17. 【熬夜猛肝万字博文】学妹问我怎么入门 Javascript,百般盘问下我终于决定贡献出自己的 JavaScript入门笔记(三)
  18. qt实现程序密钥注册功能,MD5加密+AES加密,并实现一台电脑系统一个密钥
  19. 黎曼积分并非战无不胜
  20. 四种比较简单的图像显著性区域特征提取方法原理及实现

热门文章

  1. 诺维信和科汉森合并获股东批准,将共同创建一家世界一流的发酵公司
  2. [乡土民间故事_徐苟三传奇]第十二回_歪拐差役苦挑石磨
  3. 2013年 雷诺 Renault Zoe | 警告信息 “停车: 电力故障危险”
  4. jQuery便利多个相同的class,点击显示隐藏图标,显示及隐藏其下的内容
  5. 无法打开编译的html,解决VS在编译的时候无法打开...obj文件的问题
  6. 怎么开发支付宝扫码收款应用-java 支付宝当面付
  7. java中的lt;和gt;分别是什么意思
  8. Phi-divergence
  9. JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT)
  10. 中国电子竞技产业研究报告