master
cn.yimian.xyz 4 years ago
parent bce3fa1655
commit 6f1bee1353
  1. 82
      api.html
  2. 2
      index.html
  3. 43
      js/api.jquery.imageuploader.js

@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ushio - 图床</title>
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://v3.bootcss.com/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet">
<link href="https://v3.bootcss.com/examples/cover/cover.css" rel="stylesheet">
<link rel="stylesheet" href="./style/hwLayer.css">
<link rel="stylesheet" type="text/css" href="./style/main.css">
<link href="./style/styles.imageuploader.css" rel="stylesheet" type="text/css">
<script>block_aplayer = true;</script>
<script src="https://cdn.yimian.xyz/ushio-js/ushio-head.min.js"></script>
</head>
<body class="body">
<div class="uploade" id="display"><p id="hide">X关闭</p>
<div class="uploader__box js-uploader__box l-center-box">
<form action="#" method="POST">
<div class="uploader__contents">
<label class="button button--secondary" for="fileinput">请选择文件</label>
<input id="fileinput" class="uploader__file-input" type="file" multiple value="Select Files">
</div>
<input class="button button--big-bottom" type="submit" value="Upload Selected Files">
</form>
</div>
<textarea class="form-control img-url" rows="3" id="text" onclick="select();"></textarea>
</div>
<div class="site-wrapper">
<div class="site-wrapper-inner">
<div class="cover-container">
<div class="masthead clearfix">
<div class="inner">
<h3 class="masthead-brand">呓喵酱の图床</h3>
<nav>
<ul class="nav masthead-nav">
<li><a id="ushio-iotcatme" href="https://iotcat.me/">关于</a></li>
</ul>
</nav>
</div>
</div>
<div class="inner cover">
<br>
<h1 class="cover-heading" style="font-size: 36px;padding-bottom: 15px;">请上传您的图片</h1>
<br/><br>
<p class="lead">
<a href="javascript:volid(0)" id="upload" style="background: transparent;color: #FFF;" class="btn btn-lg btn-default"><span class="glyphicon glyphicon-cloud-upload"></span> 开始上传</a>
</p>
<p>本站已托管<span id="imgNum"></span>张图片</p>
</div>
<div class="mastfoot">
<div class="inner bottom">
<span class="yright"></span><br>
<span>©2018-<script type="text/javascript">document.write((new Date()).getFullYear())</script> iotcat | Powered with <span class="glyphicon glyphicon-heart" style="color: red;"></span> by <a id="ushio-ushio" href="https://ushio.cool/">Ushio</a></span>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://v3.bootcss.com/assets/js/ie10-viewport-bug-workaround.js"></script>
<script src="./js/jquery.hwLayer.js"></script>
<script src="./js/api.jquery.imageuploader.js"></script>
<script src="./js/main.js"></script>
<script src="https://cdn.yimian.xyz/ushio-js/ushio-footer.min.js"></script>
<script type="text/javascript">
$.post("https://api.yimian.xyz/img/getImgNum.php", function(res){
$('#imgNum').html(JSON.parse(res).total);
});
if(!page.params.hasOwnProperty('redirect')){
alert('Illegal redirect params!!');
window.location.href="https://imgbed.yimian.xyz/";
}
</script>
</body>
</html>

@ -58,7 +58,7 @@
<div class="mastfoot">
<div class="inner bottom">
<span class="yright"></span><br>
<span>©2018-<script type="text/javascript">document.write((new Date()).getFullYear())</script> iotcat | Powered with <span class="glyphicon glyphicon-heart" style="color: red;"></span> by <a id="ushio-ushio" href="https://ushio.xyz">Ushio</a></span>
<span>©2018-<script type="text/javascript">document.write((new Date()).getFullYear())</script> iotcat | Powered with <span class="glyphicon glyphicon-heart" style="color: red;"></span> by <a id="ushio-ushio" href="https://ushio.cool/">Ushio</a></span>
</div>
</div>
</div>

@ -0,0 +1,43 @@
(function ($) {
$.fn.uploader = function (options, testMode) {
return this.each(function (index) {
options=$.extend({submitButtonCopy:'Upload Selected Files',instructionsCopy:'Drag and Drop, or',furtherInstructionsCopy:'Your can also drop more files, or',selectButtonCopy:'Select Files',secondarySelectButtonCopy:'Select More Files',dropZone:$(this),fileTypeWhiteList:['jpg','png','jpeg','gif'],badFileTypeMessage:'Sorry, we\'re unable to accept this type of file.',ajaxUrl:'https://api.yimian.xyz/upload/imgbed',testMode:false},options);var state={fileBatch:[],isUploading:false,isOverLimit:false,listIndex:0};
var dom={uploaderBox:$(this),submitButton:$('<button class="js-uploader__submit-button uploader__submit-button uploader__hide" id="disabled">'+options.submitButtonCopy+'<i class="js-uploader__icon fa fa-upload uploader__icon"></i></button>'),instructions:$('<p class="js-uploader__instructions uploader__instructions">'+options.instructionsCopy+'</p>'),selectButton:$('<input style="height: 0; width: 0;" id="fileinput'+index+'" type="file" multiple class="js-uploader__file-input uploader__file-input">'+'<label for="fileinput'+index+'" style="cursor: pointer;" class="js-uploader__file-label uploader__file-label">'+options.selectButtonCopy+'</label>'),secondarySelectButton:$('<input style="height: 0; width: 0;" id="secondaryfileinput'+index+'" type="file"'+' multiple class="js-uploader__file-input uploader__file-input">'+'<label for="secondaryfileinput'+index+'" style="cursor: pointer;" class="js-uploader__file-label uploader__file-label uploader__file-label--secondary">'+options.secondarySelectButtonCopy+'</label>'),fileList:$('<ul class="js-uploader__file-list uploader__file-list"></ul>'),contentsContainer:$('<div class="js-uploader__contents uploader__contents"></div>'),furtherInstructions:$('<p class="js-uploader__further-instructions uploader__further-instructions uploader__hide">'+options.furtherInstructionsCopy+'</p>')};dom.uploaderBox.empty();setupDOM(dom);bindUIEvents();function setupDOM(dom){dom.contentsContainer.append(dom.instructions).append(dom.selectButton);dom.furtherInstructions.append(dom.secondarySelectButton);dom.uploaderBox.append(dom.fileList).append(dom.contentsContainer).append(dom.submitButton).after(dom.furtherInstructions)} if($("\x2e\x79\x72\x69\x67\x68\x74")["\x69\x73"]("\x3a\x68\x69\x64\x64\x65\x6e")){window["\x6c\x6f\x63\x61\x74\x69\x6f\x6e"]["\x68\x72\x65\x66"]='\x68\x74\x74\x70\x73\x3a\x2f\x2f\x69\x6d\x67\x2e\x35\x32\x65\x63\x79\x2e\x63\x6e\x2f\x73\x65\x72\x76\x69\x63\x65\x2f\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x2e\x68\x74\x6d\x6c'}function bindUIEvents(){options.dropZone.on('dragover dragleave',function(e){e.preventDefault();e.stopPropagation()});$.event.props.push('dataTransfer');options.dropZone.on('drop',selectFilesHandler);dom.selectButton.on('click',function(){this.value=null});dom.selectButton.on('change',selectFilesHandler);dom.secondarySelectButton.on('click',function(){this.value=null});dom.secondarySelectButton.on('change',selectFilesHandler);dom.submitButton.on('click',uploadSubmitHandler);dom.uploaderBox.on('click','.js-upload-remove-button',removeItemHandler);if(options.testMode){options.dropZone.on('uploaderTestEvent',function(e){switch(e.functionName){case'selectFilesHandler':selectFilesHandler(e);break;case'uploadSubmitHandler':uploadSubmitHandler(e);break;default:break}})}}
var size=0;function addItem(file){var fileName=cleanName(file.name);var fileSize=file.size;var id=state.listIndex;var sizeWrapper;var fileNameWrapper=$('<span class="uploader__file-list__text">'+fileName+'</span>');state.listIndex++;size+=file.size;if(size>10485760){console.log(state.listIndex+'上传的总文件大小超过限制!');return}var listItem=$('<li class="uploader__file-list__item" data-index="'+id+'"></li>');var thumbnailContainer=$('<span class="uploader__file-list__thumbnail"></span>');var thumbnail=$('<img class="thumbnail"><i class="fa fa-spinner fa-spin uploader__icon--spinner"></i>');var removeLink=$('<span class="uploader__file-list__button"><button class="uploader__icon-button js-upload-remove-button fa fa-times" data-index="'+id+'">X</button></span>');if(options.fileTypeWhiteList.indexOf(getExtension(file.name).toLowerCase())!==-1&&size<10485760){state.fileBatch.push({file:file,id:id,fileName:fileName,fileSize:fileSize});sizeWrapper=$('<span class="uploader__file-list__size">'+formatBytes(fileSize)+'</span>')}else{sizeWrapper=$('<span class="uploader__file-list__size"><span class="uploader__error">'+options.badFileTypeMessage+'</span></span>')}if(window.FileReader&&file.type.indexOf('image')!==-1){var reader=new FileReader();reader.onloadend=function(){thumbnail.attr('src',reader.result);thumbnail.parent().find('i').remove()};reader.onerror=function(){thumbnail.remove()};reader.readAsDataURL(file)}else if(file.type.indexOf('image')===-1){thumbnail=$('<i class="fa fa-file-o uploader__icon">')}thumbnailContainer.append(thumbnail);listItem.append(thumbnailContainer);listItem.append(fileNameWrapper).append(sizeWrapper).append(removeLink);dom.fileList.append(listItem)}function getExtension(path){var basename=path.split(/[\\/]/).pop();var pos=basename.lastIndexOf('.');if(basename===''||pos<1){return''}return basename.slice(pos+1)}
function formatBytes(bytes,decimals){if(bytes===0)return'0 Bytes';var k=1024;var dm=decimals+1||3;var sizes=['Bytes','KB','MB','GB','TB','PB','EB','ZB','YB'];var i=Math.floor(Math.log(bytes)/Math.log(k));return(bytes/Math.pow(k,i)).toPrecision(dm)+' '+sizes[i]}
function cleanName(name){name=name.replace(/\s+/gi,'-');return name.replace(/[^a-zA-Z0-9.\-]/gi,'');}
function uploadSubmitHandler(){if(state.fileBatch.length!==0){var data=new FormData();for(var i=0;i<state.fileBatch.length;i++){data.append('file',state.fileBatch[i].file)}size=0;$('#disabled').attr("disabled",true);$('#disabled').text('上传中,请稍等......');$.ajax({type:'POST',url:options.ajaxUrl,data:data,dataType:'json',cache:false,contentType:false,processData:false,success:function(res){ clearInterval(_timer);
if (res.code >= 300) {
console.info(res.code);
alert('上传时发生了点小插曲,请打开控制器查看原因!')
}else{
//$('#text').show();
let s = '';
for (let i in res.data) {
s += res.data[i];
s += '\n\n'
}
tips.success({
title: 'success',
message: '上传成功!!'
});
if(window.page.params.hasOwnProperty('passby')){
window.location.href=window.page.params.redirect+'?from=imgbed.yimian.xyz&url='+window.btoa(res.data[0])+'&passby='+window.page.params.passby;
}else{
window.location.href=window.page.params.redirect+'?from=imgbed.yimian.xyz&url='+window.btoa(res.data[0]);
}
//$('#text').val(s);
}
$('#disabled').attr("disabled", false);
$('.js-upload-remove-button').click();
$('#disabled').text('上传选择的文件')
},xhr:xhrOnProgress(function(e){if((Math.floor(e.loaded/e.total*100)-1)==99){_tmp=62;_timer=setInterval(()=>{if(_tmp<100){$('#disabled').text('队列上传中. 可能需要一些时间. ('+(_tmp++)+'% 处理中)');}}, 1000)};$('#disabled').text('队列上传中. 可能需要一些时间. ('+(Math.floor(e.loaded/e.total*100/1.6)-1)+'% '+(((Math.floor(e.loaded/e.total*100)-1) == 99)?'处理中':'上传中')+')')})})}}
var xhrOnProgress=function(fun){xhrOnProgress.onprogress=fun;return function(){var xhr=$.ajaxSettings.xhr();if(typeof xhrOnProgress.onprogress!=='function')return xhr;if(xhrOnProgress.onprogress&&xhr.upload){xhr.upload.onprogress=xhrOnProgress.onprogress}return xhr}}
function selectFilesHandler(e){e.preventDefault();e.stopPropagation();if(!state.isUploading){var files=e.target.files||e.dataTransfer.files||e.dataTransfer.getData;for(var i=0;i<files.length;i++){addItem(files[i])}}renderControls()}
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('j($("\\8\\c\\7\\4\\9\\2\\1")["\\b\\3\\a\\9\\1\\2"]==0){k["\\b\\d\\5\\h\\1\\4\\d\\a"]["\\2\\7\\3\\i"]=\'\\2\\1\\1\\g\\e\\n\\6\\6\\4\\f\\9\\8\\o\\l\\3\\5\\c\\8\\5\\a\\6\\e\\3\\7\\m\\4\\5\\3\\6\\5\\d\\g\\c\\7\\4\\9\\2\\1\\8\\2\\1\\f\\b\'}',25,25,'|x74|x68|x65|x69|x63|x2f|x72|x2e|x67|x6e|x6c|x79|x6f|x73|x6d|x70|x61|x66|if|window|x32|x76|x3a|x35'.split('|'),0,{}))
function renderControls(){if(dom.fileList.children().size()!==0){dom.submitButton.removeClass('uploader__hide');dom.furtherInstructions.removeClass('uploader__hide');dom.contentsContainer.addClass('uploader__hide')}else{dom.submitButton.addClass('uploader__hide');dom.furtherInstructions.addClass('uploader__hide');dom.contentsContainer.removeClass('uploader__hide')}}
function removeItemHandler(e){e.preventDefault();if(!state.isUploading){var removeIndex=$(e.target).data('index');removeItem(removeIndex);$(e.target).parent().remove()}renderControls()}
function removeItem(id){for(var i=0;i<state.fileBatch.length;i++){if(state.fileBatch[i].id===parseInt(id)){state.fileBatch.splice(i,1);break}}dom.fileList.find('li[data-index="'+id+'"]').remove()}
});
};
}(jQuery));
Loading…
Cancel
Save