由于蓝奏云增加了登录验证,已经不能使用账号密码的方式登录了,请自行抓取 cookie 进行使用(cookie 有效期大概是 20 天左右)。效果图:HTML代码:<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="//ku.oioweb.cn/LayUI/layui/css/layui.css">
<script src="//ku.oioweb.cn/jQuery/3.4.1/jquery.min.js"></script>
<script src="//ku.oioweb.cn/LayUI/layui/layui.all.js"></script>
<script src="//ku.oioweb.cn/clipboard.js/2.0.4/clipboard.min.js"></script>
</head>
<body>
<div class="layui-upload-drag" id="testList" style="width: 100%;padding: 51px 0;border: none;">
<i class="layui-icon"></i>
<p>点击上传,或将文件拖拽到此处</p>
</div>
<div class="layui-upload">
<div class="layui-upload-list" style="text-align: center;">
<table class="layui-table">
<thead>
<tr>
<th>文件名</th>
<th>大小</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody id="demoList"></tbody>
</table>
</div>
<button type="button" class="layui-btn layui-btn-fluid layui-btn-radius" id="testListAction">开始上传</button>
</div>
<script>
;!function () {
var upload = layui.upload;
var demoListView = $('#demoList')
, uploadListIns = upload.render({
elem: '#testList'
,
url: 'api.php'
,
accept: 'file'
,
data: {type: "upload"}
,
size: 1024 * 1024 * 100
,
exts: 'doc|docx|zip|rar|apk|ipa|txt|exe|7z|e|z|ct|ke|cetrainer|db|tar|pdf|w3x|epub|mobi|azw|azw3|osk|osz|xpa|cpk|lua|jar|dmg|ppt|pptx|xls|xlsx|mp3|ipa|iso|img|gho|ttf|ttc|txf|dwg|bat|dll'
,
multiple: true
,
auto: false
,
bindAction: '#testListAction'
,
choose: function (obj) {
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function (index, file, result) {
var tr = $(['<tr id="upload-' + index + '">'
, '<td>' + file.name + '</td>'
, '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>'
, '<td>等待上传</td>'
, '<td>'
, '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
, '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
, '</td>'
, '</tr>'].join(''));
//单个重传
tr.find('.demo-reload').on('click', function () {
obj.upload(index, file);
});
//删除
tr.find('.demo-delete').on('click', function () {
delete files[index];
tr.remove();
uploadListIns.config.elem.next()[0].value = '';
});
demoListView.append(tr);
});
}
,
done: function (res, index, upload) {
if (res.code == 1) { //上传成功
var tr = demoListView.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
tds.eq(3).html('<button type="button" class="layui-btn layui-btn-sm copy" data-clipboard-text="' + res.url + '"><i class="layui-icon"></i></button><button class="layui-btn layui-btn-sm delfile" fileid="' + res.id + '"><i class="layui-icon"></i></button>');
tr.find('.delfile').on('click', function () {
$.post({
url: "api.php",
beforeSend: function () {
layer.load();
},
data: {id: $(this).attr('fileid'), type: "del_file"},
success: function (data) {
if (data.code == 1) {
layer.msg("删除成功!");
tr.remove();
} else {
layer.msg("删除失败!");
}
layer.closeAll('loading');
},
error: function (data) {
layer.closeAll('loading');
layer.msg("删除失败!");
}
})
});
var clipboard = new ClipboardJS('.copy');
clipboard.on('success', function (e) {
layer.msg("复制成功!");
e.clearSelection();
});
clipboard.on('error', function (e) {
layer.msg("复制失败!");
});
return delete this.files[index];
} else {
layer.msg(res.msg);
}
this.error(index, upload);
}
,
error: function (index, upload) {
var tr = demoListView.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
});
}();
</script>
</body>
</html>api代码:<?php
header('Access-Control-Allow-Origin:*');
header('Content-type:application/json; charset=utf-8');
error_reporting(0);
$Lanzou = new Lanzou();
!empty($_POST['type']) ? $type = $_POST['type'] : exit($Lanzou->error("请勿直接访问!"));
switch ($type){
case "upload":
$array= array("doc", "docx", "zip", "rar", "apk", "ipa", "txt", "exe", "7z", "e", "z", "ct", "ke", "cetrainer", "db", "tar", "pdf", "w3x", "epub", "mobi", "azw", "azw3", "osk", "osz", "xpa", "cpk", "lua", "jar", "dmg", "ppt", "pptx", "xls", "xlsx", "mp3", "ipa", "iso", "img", "gho", "ttf", "ttc", "txf", "dwg", "bat", "dll");
$tmp=explode(".",$_FILES['file']['name']);
$file = $_FILES["file"]["tmp_name"];
$extension=end($tmp);
if($_FILES['file']['error']>0 || $file == ""){
exit($Lanzou->error("文件损坏!"));
}else{
if (($_FILES['file']['size']<100*1024*1024) && in_array($extension, $array)){
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
$files = "upload/" . $_FILES["file"]["name"];
}
echo json_encode($Lanzou->upload_file($files));
unlink($files);
}
break;
case "del_file":
!empty($_POST['id']) ? $id = $_POST['id'] : exit($Lanzou->error("请传入文件ID!"));
echo json_encode($Lanzou->del_file($id));
break;
default:
$Lanzou->error("请勿直接访问!");
}
/**
* Class Lanzou
* 蓝奏云在线免登陆上传
*/
class Lanzou
{
private $config = [
'cookie' => 'phpdisk_info=VGlSYFc1Vm0CMg5XD2EGVVZqDGcJOlV3BmtTZwYyCjhXYl9sUQoDPFMwAmYLYFc%2;', //此处填写自己抓取的cookie
'upload_file' => 'https://pc.woozooo.com/fileup.php',
'del_file' => 'https://pc.woozooo.com/doupload.php',
];
public function upload_file($file)
{
$upload = [
'post' => [
'task' => 1,
'upload_file' => new CURLFile(realpath($file))
],
'cookie' => $this->config['cookie']
];
$json = json_decode($this->get_curl($this->config['upload_file'], $upload));
if ($json->zt == 1) {
return [
"code" => 1,
"msg" => $json->info,
"url" => $json->text[0]->is_newd . "/" . $json->text[0]->f_id,
"name" => $json->text[0]->name_all,
"size" => $json->text[0]->size,
"id" => $json->text[0]->id
];
} else {
return [
"code" => -1,
"msg" => $json->info
];
}
}
public function del_file($id)
{
$del = [
"post" => [
'task' => 6,
'file_id' => $id
],
'cookie' => $this->config['cookie']
];
$json = json_decode($this->get_curl($this->config['del_file'], $del));
if ($json->zt == 1) {
return [
"code" => 1,
"msg" => $json->info
];
}else{
return [
"code" => -1,
"msg" => $json->info
];
}
}
public function get_curl($url, $paras = array())
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
if ($paras['httpheader']) { // 请求头
$httpheader = $paras['httpheader'];
} else {
$httpheader[] = "Accept:*/*";
$httpheader[] = "Accept-Encoding:gzip,deflate,sdch";
$httpheader[] = "Accept-Language:zh-CN,zh;q=0.8";
$httpheader[] = "Connection:close";
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
if ($paras['ctime']) { // 连接超时
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $paras['ctime']);
}
if ($paras['rtime']) { // 读取超时
curl_setopt($ch, CURLOPT_TIMEOUT, $paras['rtime']);
}
if ($paras['post']) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']);
}
if ($paras['header']) {
curl_setopt($ch, CURLOPT_HEADER, true);
}
if ($paras['cookie']) {
curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']);
}
if ($paras['refer']) {
if ($paras['refer'] == 1) {
curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f=');
} else {
curl_setopt($ch, CURLOPT_REFERER, $paras['refer']);
}
}
if ($paras['ua']) {
curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']);
} else {
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
}
if ($paras['nobody']) {
curl_setopt($ch, CURLOPT_NOBODY, 1);
}
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
public function error($msg)
{
echo json_encode([
"code" => -1,
"msg" => $msg
], 320);
}
}PS注意项目:请在程序目录下新建文件夹(upload)用于临时存储文件 支持多文件上传 上传失败文件重新上传 直接复制链接 在线删除文件
评论
172条评论句话 Lv.1 回复
哈哈哈哈
北京市 广电网
need login Lv.1 回复
感谢感谢
北京市 移动
野野不会逆向 Lv.1
Chrome 114.0.0.0
Windows 回复
感谢楼主表情,好人一生平安
中国 移动
征服 Lv.1
Chrome 94.0.4606.71
Windows 回复
支持一下,黑蜘蛛博客有你
更精彩广东省东莞市 电信
听雨挽清风 Lv.1
Chrome 113.0.0.0
Windows 回复
感谢楼主
,好人一生平安
中国 移动
111 Lv.1
Chrome 87.0.4280.141
Android 13 回复
我来了
北京市 移动
7 Lv.1
Internet Explorer
iPhone iOS 16.2 回复
我需要这个代码
北京市 移动
富士康fsd Lv.1
Chrome 86.0.4240.198
Windows 回复
广东省珠海市 电信
聪@聪& Lv.1
Chrome 111.0.0.0
Windows 回复
的撒的撒的撒的撒的撒旦
黑龙江省哈尔滨市 联通
ken Lv.1
Chrome 86.0.4240.198
Windows 回复
感谢楼主
,好人一生平安
广东省东莞市 电信