<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>上传文件</title> <link rel="stylesheet" type="text/css" href="../Js/layui/font/iconfont.css" /> <link rel="stylesheet" type="text/css" href="../Js/layui/css/layui.css" /> <style> body { font-family: 'Microsoft YaHei'; } .hidden { display: none; } .middle-align { vertical-align: middle; text-align: center; } .icon-shangchuan1 { font-size: 50px; } .layui-footer { background-color: transparent !important; left: 0 !important; vertical-align: middle !important; text-align: center !important; padding: 10px !important; } .layui-form { padding: 15px !important; } p { padding: 5px; } .layui-form-label { text-align: left !important; } .layui-form { padding: 0px !important; } .layui-form-item { margin: 15px !important; } .webuploader-element-invisible { display:none; } .fileinfo { padding: 10px; } </style> </head> <body> <script src="../js/jquery-3.3.1.min.js"></script> <script src="../js/webuploader/webuploader.js"></script> <script src="../Js/layui/layui.all.js"></script> <script src="../Js/Common.js"></script> <form class="layui-form middle-align" onkeydown="if(event.keyCode==13)return false;"> <div class="layui-form-item layui-layout-admin middle-align"> <div> <div class="layui-upload-drag middle-align" id="uploadFile"> <i class="iconfont icon-shangchuan1"></i> <p id="uploadTips"></p> </div> </div> </div> <div class="fileinfo hidden"> <p id="uploadingTips"></p> <p id="fileName"></p> <p id="fileSize"></p> </div> <div class="fileinfo hidden"> <div class="layui-progress" id="uploadProgress" lay-filter="uploadProgress" lay-showpercent="true"> <div class="layui-progress-bar layui-bg-blue" lay-percent=""></div> </div> </div> </div> <div class="layui-form-item layui-layout-admin"> <a id="back" class="layui-btn layui-btn-primary"></a> </div> </form> <script> var intervalHandle; var param = layui.getParams(); var currId = parseInt(param.currId); var currUser = param.currUser; layui.$("#uploadTips").text(layui.translater("UploadTips")); layui.$("#uploadingTips").text(layui.translater("Uploading")); layui.$("#back").text(layui.translater("Cancel")); var fileSize; var fileMd5; var uploadChunks; var GUID = WebUploader.Base.guid();//一个GUID WebUploader.Uploader.register({ "before-send": "beforeSend" }, { beforeSend: function (block) { var task = WebUploader.Deferred(); if (uploadChunks != null && (uploadChunks.indexOf("," + block.chunk + ",") > -1 || uploadChunks.indexOf("%%%") > -1)) { task.reject(); } else { task.resolve(); } return task.promise(); } }); //请求服务器查询有哪些分片已上传 var uploader = WebUploader.create({ swf: '../js/webuploader/Uploader.swf', server: '/CloudDisk/Upload/UploadFile', pick: '#uploadFile', dnd: 'body',//设置dnd为整个页面 resize: false, chunked: true,//开始分片上传 threads: 4, chunkSize: 4096000,//每一片的大小 auto: false, extensions: 'zip', formData: { guid: GUID } }); uploader.on('fileQueued', function (file) { fileSize = (parseFloat(file.size) / 1048576).toFixed(2); if (fileSize > 500) { window.top.layer.alert(layui.translater("FileSizeAstrict") + "500M"); return false; } layui.$("#uploadFile").addClass("hidden"); layui.$(".fileinfo").removeClass("hidden") layui.$("#fileName").text(layui.translater("FileName") + ":\r\n" + file.name); layui.$("#fileSize").text(layui.translater("FileSize") + ":\r\n" + fileSize + "M") layui.element.progress('uploadProgress', '1%'); layui.element.render(); //获取文件MD5值 uploader.md5File(file, 0, 10 * 1024 * 1024) // 完成 .then(function (md5) { fileMd5 = md5; uploader.options.formData.fileMd5 = md5; if (uploadChunks == null || uploadChunks.indexOf(file.name + ":") == -1) { layui.$.post("/CloudDisk/Upload/CheckUpload", { "fileMd5": fileMd5 }, function (res) { uploadChunks = file.name + ":," + res.chunks + ","; uploader.upload(); intervalHandle = self.setInterval(function () { layui.$.post("/CloudDisk/Upload/GetUploadProgress", { "guid": GUID }, function (prog) { var progressNumber = Number(prog.progress); if (progressNumber > 0) { $("#progressText").text((0.59 * progressNumber + 40).toFixed(0) + '%'); layui.element.progress('uploadProgress', (0.59 * progressNumber + 40).toFixed(0) + '%'); } }); }, 3000); }); } }); }); uploader.on('uploadProgress', function (file, percentage) { $("#progressText").text(Math.floor(percentage * 40).toFixed(0) + '%'); layui.element.progress('uploadProgress', Math.floor(percentage * 40).toFixed(0) + '%'); }); uploader.on('uploadSuccess', function (file) { if (uploadChunks.indexOf("%%%") > -1) { window.top.layer.alert(layui.translater("FileExists")); layui.$("#back").click(); return false; } else { layui.$.post('/CloudDisk/Upload/Merge', { fileMd5, guid: GUID, fileName: file.name, currUser, currId, fileSize }, function (res) { layui.element.progress('uploadProgress', '100%'); layui.$("#back").click(); return false; }); } }); uploader.on('uploadError', function () { layui.$("#back").click(); window.top.layui.layer.alert(layui.translater("UploadFaild")); }); layui.elementOn("#back", "click", function () { if (parent.loadPage) { parent.loadPage(); } var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); }); </script> </body> </html>