清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
//没有规划过,所以有点乱,函数等没写注释。
//没有正在登录等等一些进度提示,由于时间关系,并未完善。
//还有一些小Bug。
// by mady
if(window.navigator.userAgent.indexOf("Chrome")<0){alert("请使用Chrome浏览器!")};
var fs;//files
var u="http://cool.c.pl/";
if(window.location.href.indexOf("www")!=-1)window.location.href=u;
//var u="http://127.0.0.1/Justoo/demoCopy/";
var status=0;//状态:1:在线,0:离线
var upresult=""; //上传结果
var strmaxsize="2M";
var maxsize=2097152;
var totalsize=0;//文件总大小
var fc=0;
var gt=0;//大于Maxsize的文件数
var axhr=[];
var aloadding=[];//正在上传
var tid;
var timeCount=0;
var fsl=0;//files length
var delcount=0;//文件删除数
var $=function(id){return document.getElementById(id)?document.getElementById(id):!1;};
var main=$("main");
var title=$("title");
var list = $("fileList");
var FilesCount=$("FilesCount");
var result=$("result");
var help=$("help");
var fn0=$("fn0");
var us0=$("us0");
var op0=$("op0");
title.innerHTML=l.title;
help.innerHTML=l.help;
fn0.innerHTML=l.fn0;
us0.innerHTML=l.us0;
op0.innerHTML=l.op0;
document.addEventListener("dragenter", function(e){
main.style.borderColor = 'gray';
}, false);
document.addEventListener("dragleave", function(e){
main.style.borderColor = 'silver';
}, false);
main.addEventListener("dragenter", function(e){
main.style.borderColor = 'gray';
main.style.backgroundColor = 'white';
}, false);
main.addEventListener("dragleave", function(e){
main.style.backgroundColor = 'transparent';
}, false);
main.addEventListener("dragenter", function(e){
e.stopPropagation();
e.preventDefault();
}, false);
main.addEventListener("dragover", function(e){
e.stopPropagation();
e.preventDefault();
}, false);
main.addEventListener("drop", function(e){
var i,tmplen,tfs=[];
e.stopPropagation();
e.preventDefault();
if(status==0){
msgbox("尚未登录不能上传!");
return false;
}
fs=e.dataTransfer.files;
tmplen=fs.length;
FilesCount.innerHTML=l.filescount+(tmplen+fsl-delcount);
for(i=0;i<tmplen;i++){
if(fs[i].size>maxsize){
gt++;
continue;
}
if(gt){
msgbox("有"+gt+"个文件超过"+strmaxsize);
gt=0;
}
fc++;
showUploadedItem(fs[i],i);
tfs.push(fs[i]);
}
if(fc){
fc=0;
delcount++;
Timing();
sendFiles(tfs);
}else{
upFilesCount();
}
}, false);
function showUploadedItem (f,i) {
var li = document.createElement("div");
li.innerHTML = '<span class="fn" name="fn" title='+f.name+'>'+f.name +'</span><span name="fsize"></span><span><a href="#" onclick="delFile(this,'+parseInt(i+fsl)+')">'+l.abort+'</a></span>';
list.appendChild(li);
}
function sendFiles(fs) {
var i,len = fs.length,reader,file;
for (i=0 ; i < len; i++ ) {
file = fs[i];
if (file.type.match(/image.*/)||!0) {
if ( window.FileReader ) {
reader = new FileReader();
reader.readAsDataURL(file);
}
var formdata = window.FormData?new FormData():!0;
if (formdata) {
formdata.append("images", file);
axhr[i+fsl]=new upload(formdata,i+fsl);
}
}
}
fsl+=len;
}
function upload(formdata,se){
var tfn,tfs,tse;
var xhr=new XMLHttpRequest();
aloadding[se]=1;
//更新状态
updateStatus();
//开始计时
xhr.open("post",u+"upload.php",true);
//xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("If-Modified-Since","0");
fsize=document.getElementsByName("fsize");
fn=document.getElementsByName("fn");
tfn=fn[se];
tfs=fsize[se];
tse=se;
xhr.upload.onprogress = function(e) {
if(e.lengthComputable) {
var xs=e.loaded/e.total*100;
xs=parseInt(xs);
tfn.style.backgroundPosition=-200+xs*2+"px";
tfs.innerHTML=formatSize(e.loaded)+"/"+formatSize(e.total);
if(e.total==e.loaded){
aloadding[tse]=0;
updateStatus();
}
}
};
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
updateMyFiles();
if(xhr.responseText.toJustLowerCase()!="u.ok"){
upresult+=xhr.responseText+"\n";
$("fileList").getElementsByTagName("div")[tse+1].style.display="none";
delcount++;
upFilesCount();
if(result.innerHTML==l.successful){
setTimeout(function(){msgbox(upresult+(upresult.split("\n").length-1)+"个文件上传失败!");},200);
upresult="";
}
}
}
}
};
xhr.send(formdata);
return xhr;
}
function delFile(o,v){
//先判断是否正在上传,如果是则取消上传,如果不是则Ajax从服务器删除
if(aloadding[v]==1){
axhr[v].abort();
aloadding[v]=0;
}else{
//delFromServer(v);
}
updateStatus()
o.parentNode.parentNode.style.display='none';
//delcount++;
upFilesCount();
}
function formatSize(v){
return v<1024?(v+'B'):(v/1024<1024)?(to2p(v/1024)+'KB'):to2p(v/1024/1024)+'MB';
}
function to2p(v){
return Math.round(v * 100) / 100;
}
function delFromServer(v,fid){
ajax({
u:v,
a:!0,
d:'fid='+fid,
f:function(x){
if(!handleAjaxInfo(x.responseText)){
msgbox("文件删除失败!");
};
updateMyFiles();
}
});
}
function upFilesCount(){
FilesCount.innerHTML=l.filescount+(fsl-delcount);
}
function updateStatus(){
var tmp;
tmp=aloadding.join("");
if(tmp.indexOf("1")!=-1){
result.innerHTML=l.uploadding;
return true;
}else{
result.innerHTML=l.successful;
Timeover();
return false;
}
}
//开始计时
function Timing(){
tid=setInterval(updateTime,1000);
}
//结束计时
function Timeover(){
clearInterval(tid);
//timeCount=0;
}
//更新时间
function updateTime(){
timeCount++;
var time=document.getElementById("time");
time.innerHTML=l.timeCount+timeCount+l.second;
}
$("btn_login").onclick=login;
function login(){
var tmp=isBlank(["user","pwd"],["用户名不能为空!","密码不能为空!"]);
if(tmp){
msgbox(tmp);
return false;
}
ajax({
u:window.u+"login.php",
a:!0,
d:'u='+$("user").value+'&p='+$("pwd").value,
f:function(x){
if(!handleAjaxInfo(x.responseText)){
msgbox("用户名不能为空!");
};
}
});
updateMyFiles();
}
$("btn_reg").onclick=function(){
showUser("r");
}
$("btn_submit").onclick=reg;
$("btn_loginout").onclick=loginout;
$("btn_back").onclick=function(){
showUser("l");
}
$("pwd").onkeydown=function(e){
if(e.keyCode==13){
login();
}
}
$("e").onkeydown=function(e){
if(e.keyCode==13){
reg();
}
}
function reg(){
var tmp=isBlank(["u","p","p2","e"],["用户名不能为空!","密码不能为空!","确认密码不能为空!","E-mail不能为空!"]);
if(tmp){
msgbox(tmp);
return false;
}
if($("p").value!=$("p2").value){
msgbox("两次输入的密码不同!");
return false;
}
if(!isEmail($("e").value)){
msgbox("邮箱格式错误!");
return false;
}
if(!isUserName($("u").value)){
msgbox("用户名格式错误(只允许字母,数字以及以下字符_.- 长度在4-16之间且必须字母开头)!");
return false;
}
ajax({
u:window.u+"reg.php",
a:!0,
d:'u='+$("u").value+'&p='+$("p").value+'&p2='+$("p2").value+'&e='+$("e").value,
f:function(x){
handleAjaxInfo(x.responseText);
}
});
}
function showUser(v){
switch(v){
case 'l':
$("l").style.display="block";
$("ld").style.display="none";
$("r").style.display="none";
break;
case 'ld':
$("l").style.display="none";
$("ld").style.display="block";
$("r").style.display="none";
break;
case 'r':
$("l").style.display="none";
$("ld").style.display="none";
$("r").style.display="block";
break;
}
}
function ajax(v){
//m:method,a:asyn,u:url,f:callback,d:data;
v.m=v.m?v.m:'get';
v.a=v.a?!0:!1;
var xml=new XMLHttpRequest();
xml.open(v.m,v.u+"?"+v.d,v.a);
xml.setRequestHeader("If-Modified-Since","0");
///xml.setRequestHeader("Cache-Control","no-cache");
xml.send();
if(v.a){
xml.onreadystatechange=function(){
if(xml.readyState==4){
if(xml.status==200){
v.f(xml);
}
}
}
}else{
return xml.responseText;
}
}
function loginout(){
delCookie("username");
delCookie("password");
delCookie("ip");
post("loginout.php");
status=0;
updateMyFiles();
}
function post(url){
ajax({
m:"post",
u:url,
a:!0,
d:'',
f:function(x){
showUser("l");
}
});
}
//首次进入页面自动登录
ajax({
u:window.u+"login.php",
a:!0,
d:'u',
f:function(x){
if(!handleAjaxInfo(x.responseText)){
showUser("l");
};
}
});
String.prototype.toJustLowerCase= function(){
//转为只含有字母数字下划线和点的小写字符串
return this.toLowerCase().replace(/[^\w\.]/ig,"");
}
function handleAjaxInfo(v){
v=v.toJustLowerCase();
switch(v){
case 'l.nologin':
return !1;
case 'r.ok':
case 're.ok':
case 'l.ok':
status=1;
$("info").innerHTML='您好:'+getCookie("username")+'当前IP:'+getCookie("ip");
showUser("ld");
break;
case 'd.ok':
msgbox("删除成功!");
break;
case 'l.servererror':
msgbox("服务器错误!");
break;
case 'l.loginfaild':
msgbox("用户名或密码错误!");
break;
case 'r.wrong':
msgbox("用户名或Email已注册!");
break;
default:
msgbox(v);
break;
}
return !0;
}
function isBlank(v1,v2){
if(typeof(v2)!="undefined"){
for(var i=0;i<v1.length;i++){
if($(v1[i]).value.replace(" ","")==""){
$(v1[i]).focus();
return v2[i];
}
}
return !1;
}
if($(v1).value.replace(" ","")==""){
return !0;
}
return !1;
}
function isEmail(v){
return /^[0-9a-zA-Z_\.\-]+@([0-9a-zA-Z_\-\.])+[\.]+[a-zA-Z]{2,4}$/.test(v);
}
function isUserName(v){
if(v.length>16 ||v.length<4)return false;
return /^[a-zA-Z][0-9a-zA-Z_\.\-]*$/.test(v);
}
function msgbox(v){
alert(v);
}
function getCookie(objName){
var arrStr = document.cookie.split("; ");
for(var i = 0;i < arrStr.length;i++){
var temp = arrStr[i].split("=");
if(temp[0] == objName) return unescape(temp[1]);
}
}
function delCookie(name){
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = name + "=a; expires=" + date.toGMTString();
}
//test function
function updateMyFiles(){
ajax({
u:window.u+"getfiles.php",
a:!0,
d:'u',
f:function(x){
var tmp=x.responseText;
var fileshow=document.getElementById("down");
if(tmp.indexOf("var _mf=[''];")<0){
eval(tmp);
_mf.pop();
var _mfl=_mf.length;
for(i=0;i<_mfl;i+=4){
totalsize+=parseInt(_mf[i+1],10);
}
var downtitle="<dt>文件下载("+formatSize(totalsize)+"/10MB)</dt>";
totalsize=0;
fileshow.innerHTML=downtitle;
for(i=0;i<_mfl;i+=4){
fileshow.innerHTML+='<dd>\
<div class="filename">\
'+_mf[i]+'\
</div>\
<div class="size">\
'+formatSize(_mf[i+1])+'\
</div>\
<div class="renewal">\
剩余'+(7-(_mf[i+3]))+'天\
</div>\
<div class="down">\
<a href="javascript:renewal(\''+window.u+'renewal.php\',\''+_mf[i+2]+'\')">续期</a> | <a href="'+window.u+'down.php?fid='+_mf[i+2]+'">下载</a> | <a href="javascript:delFromServer(\''+window.u+'delfile.php\',\''+_mf[i+2]+'\')">删除</a>\
</div>\
</dd>';
}
}else{
fileshow.innerHTML="";
}
}
});
}
function renewal(v,fid){
ajax({
u:v,
a:!0,
d:'fid='+fid,
f:function(x){
if(!handleAjaxInfo(x.responseText)){
msgbox("续期失败!");
}else{
msgbox("续期成功!");
};
updateMyFiles();
}
});
}
updateMyFiles();