1 $(function() {2 var count = 0;3 /*----------------------------------------------文件上传-----------------------------------------*/

4

5 window.uploadFile = function(url, filetypes, callback) {6

7 var txt = "文档文件限制20M,压缩文件限制100M,仅支持jpg png gif doc docx ppt pptx xls xlsx zip文件上传,图片和文件请分开上传!";8 var option ={9 title: "系统提醒",10 btn: parseInt("0011", 2),11 onOk: function() {12 var input = document.createElement("input");13 input.setAttribute("type", 'file');14 input.setAttribute("id", parseInt(Math.random() * 10000));15 input.setAttribute("accept", 'image/*,application/msword,'+

16 'application/vnd.ms-powerpoint,application/vnd.ms-excel,application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/x-zip-compressed');17 input.setAttribute("style", 'display:none');18 input.setAttribute("multiple", 'multiple');19 document.body.appendChild(input);20 if (count > 1) input.setAttribute("multiple", 'multiple');21 input.onchange = function(event) {22 $("body").mLoading("show");23 $(".mloading-text").text("文件上传中...");24 var fd = newFormData();25 var form = newFormData();26 var files =input.files;27 verification(files, function(res) {28 if(res.IsPass) {29 if (!res.IsFile) {30 url = window.FileuploadServer + "?SaveType=2";31 }32 var bigfiles = "";33 var allPromises =[];34 for (var i = 0; i < files.length; i++) {35 console.log(files[i]);36 let filesize = Math.round(files[i].size / 1024 * 100) / 100;37 if (files[i].name.toLowerCase().indexOf("pdf") > -1

38 || files[i].name.toLowerCase().indexOf("ppt") > -1

39 || files[i].name.toLowerCase().indexOf("pptx") > -1

40 || files[i].name.toLowerCase().indexOf("word") > -1

41 || files[i].name.toLowerCase().indexOf("doc") > -1

42 || files[i].name.toLowerCase().indexOf("docx") > -1

43 || files[i].name.toLowerCase().indexOf("xls") > -1

44 || files[i].name.toLowerCase().indexOf("xlsx") > -1

45 || files[i].name.toLowerCase().indexOf("pdf") > -1

46 ) {47 if (filesize > 30720) {48 if (bigfiles == "") {49 bigfiles =files[i].name;50 } else{51 bigfiles += "、" +files[i].name;52 }53 } else{54 form.append('file' +i, files[i]);55 }56 } else if (files[i].name.toLowerCase().indexOf("zip"))57 {58 if (filesize > 102400) {59 if (bigfiles == "") {60 bigfiles =files[i].name;61 } else{62 bigfiles += "、" +files[i].name;63 }64 } else{65 form.append('file' +i, files[i]);66 }67 }68 else if (files[i].name.indexOf("jpeg") > -1

69 || files[i].name.toLowerCase().indexOf("png") > -1

70 || files[i].name.toLowerCase().indexOf("jpg") > -1

71 || files[i].name.toLowerCase().indexOf("gif") > -1

72 ) {73 var filename =files[i].name.toLowerCase();74 var file =files[i];75 if (filesize > 2048) {76

77 allPromises.push(photoCompress(file, { quality: 1 }).then(function(res) {78 var data = newObject();79 data.filename =filename;80 data.basecode =res;81 returndata;82 }))83

84 } else{85 form.append('file' +i, files[i]);86 }87

88 } else{89 $("body").mLoading("hide");90 toastr.error("上传文件格式不符合规范");91 files =[];92 return false;93 }94

95 }96

97 if (allPromises.length == 0) {98 if (bigfiles != "") {99 $("body").mLoading("hide");100 toastr.error("以下文件不符合规范:" + bigfiles + ";图片限制为2M、文件限制为20M、压缩文件限制为50M");101 } else{102

103 $.ajax({104 data: form,105 type: "POST",106 processData: false,107 contentType: false,108 url: url,109 success: function(res) {110 console.log(res);111 if (filetypes.indexOf(".jpg") != -1) {112

113 }114 res.Alias =[];115 document.body.removeChild(input);116 if (res.FileNames !=undefined) {117 if (res.FileNames.length ==files.length) {118 for (var i = 0; i < res.FileNames.length; i++) {119 res.Alias[res.Alias.length] =files[i].name;120

121 }122 }123 } else{124

125 }126 $("body").mLoading("hide");127 callback(res);128 }129 });130 }131 } else{132 Promise133 .all(allPromises)134 .then(function(results) {135 for (var i = 0; i < results.length; i++) {136 var bl =convertBase64UrlToBlob(results[i].basecode);137 form.append("file", bl, results[i].filename); //文件对象

138 }139 $.ajax({140 data: form,141 type: "POST",142 processData: false,143 contentType: false,144 url: url,145 success: function(res) {146 console.log(res);147 if (filetypes.indexOf(".jpg") != -1) {148

149 }150 res.Alias =[];151

152 if (res.FileNames !=undefined) {153 if (res.FileNames.length ==files.length) {154 for (var i = 0; i < res.FileNames.length; i++) {155 res.Alias[res.Alias.length] =files[i].name;156

157 }158 }159 } else{160

161 }162 $("body").mLoading("hide");163 callback(res);164 }165 });166 });167 }168 } else{169 $("body").mLoading("hide");170 toastr.error("请把图片和文件分开上传!");171 }172 })173

174

175 }176 input.click();177 }178 };179 window.wxc.xcConfirm(txt, "custom", option,"开始上传","关闭");180

181

182 }183 //验证上传的文件是否为统一类型

184 functionverification(files, callback)185 {186 var res = newObject();187 var FirstIsFile = false;188 var OtherIsFile = false;189 for (var i = 0; i < files.length; i++) {190 if (files[i].name.indexOf("pdf") > -1

191 || files[i].name.toLowerCase().indexOf("ppt") > -1

192 || files[i].name.toLowerCase().indexOf("pptx") > -1

193 || files[i].name.toLowerCase().indexOf("word") > -1

194 || files[i].name.toLowerCase().indexOf("doc") > -1

195 || files[i].name.toLowerCase().indexOf("docx") > -1

196 || files[i].name.toLowerCase().indexOf("xls") > -1

197 || files[i].name.toLowerCase().indexOf("xlsx") > -1

198 || files[i].name.toLowerCase().indexOf("pdf") > -1

199 ) {200 if (i == 0) {201 FirstIsFile = true;202 } else{203 OtherIsFile = true;204 }205

206 } else if (files[i].name.toLowerCase().indexOf("zip") > -1) {207 if (i == 0) {208 FirstIsFile = true;209 } else{210 OtherIsFile = true;211 }212 }else if (files[i].name.indexOf("jpeg") > -1

213 || files[i].name.toLowerCase().indexOf("png") > -1

214 || files[i].name.toLowerCase().indexOf("jpg") > -1

215 || files[i].name.toLowerCase().indexOf("gif") > -1

216 ) {217 if (i == 0) {218 FirstIsFile = false;219 } else{220 OtherIsFile = false;221 }222

223 } else{224 res.IsPass = false;225

226 }227 if (files.length == 1) {228 res.IsPass = true;229 res.IsFile =FirstIsFile;230 } else{231 if (FirstIsFile !=OtherIsFile) {232 res.IsPass = false;233 } else{234 res.IsPass = true;235 res.IsFile =FirstIsFile;236 }237 }238 }239 callback(res);240 }241 window.delFile = function(keyid, callback)242 {243 $.post("https://image.centaline-sc.com:/File/delete", { KeyId: keyid }, function(res) {244 callback(res);245 })246 }247

248 /*

249 三个参数250 file:一个是文件(类型是图片格式),251 w:一个是文件压缩的后宽度,宽度越小,字节越小252 objDiv:一个是容器或者回调函数253 photoCompress()254 */

255 functionphotoCompress(file, w) {256

257 var ready = newFileReader();258 /*开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容.*/

259 ready.readAsDataURL(file);260

261 var p = new Promise(function (resolve, reject) { //做一些异步操作

262 ready.onload = function() {263 var re =ready.result;264 resolve(canvasDataURL(re, w));265 }266

267 });268 returnp;269 //ready.onload = function () {

270 //var re = this.result;

271 //canvasDataURL(re, w, objDiv)

272 //}

273

274

275 }276

277 functioncanvasDataURL(path, obj) {278 var img = newImage();279 img.src =path;280 var p = new Promise(function (resolve, reject) { //做一些异步操作

281 img.onload = function() {282 var that =img;283 //默认按比例压缩

284 var w =that.width,285 h =that.height,286 scale = w /h;287 w = obj.width ||w;288 h = obj.height || (w /scale);289 var quality =0.1; //默认图片质量为0.7

290 //生成canvas

291 var canvas = document.createElement('canvas');292 var ctx = canvas.getContext('2d');293 //创建属性节点

294 var anw = document.createAttribute("width");295 anw.nodeValue =w;296 var anh = document.createAttribute("height");297 anh.nodeValue =h;298 canvas.setAttributeNode(anw);299 canvas.setAttributeNode(anh);300 ctx.drawImage(that, 0, 0, w, h);301 //图像质量

302 if (obj.quality && obj.quality <= 1 && obj.quality > 0) {303 quality =obj.quality;304 }305 //quality值越小,所绘制出的图像越模糊

306 var base64 = canvas.toDataURL('image/jpeg', 0.9);307 //回调函数返回base64的值

308 resolve(base64);309 }310

311 });312 returnp;313 }314 /**315 * 将以base64的图片url数据转换为Blob316 * @param urlData317 * 用url方式表示的base64图片数据318 */

319 functionconvertBase64UrlToBlob(urlData) {320 var arr = urlData.split(','), mime = arr[0].match(/:(.*?);/)[1],321 bstr = atob(arr[1]), n = bstr.length, u8arr = newUint8Array(n);322 while (n--) {323 u8arr[n] =bstr.charCodeAt(n);324 }325 return newBlob([u8arr], { type: mime });326 }327

328 })

mysql 上传rar文件大小_js文件上传 自定义压缩文件和文件格式及大小限制相关推荐

  1. kali linux解压文件.gz,kali linux 压缩文件解压缩命令(包含7z)

    tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解压1 ...

  2. Linux tar命令总结:Linux下对文件进行打包、压缩并分割成指定大小

    1.普通tar压缩命令 tar -zcvf andywang.tar.gz andywang //将andywang文件夹压缩成andywang.tar.gz 2.压缩后的文件太大,需要将andywa ...

  3. Android中将指定文件夹打包成压缩文件

    Android中将指定文件夹打包成压缩文件 因为业务功能的需要,所以今天在网上找了一下安卓中生成压缩文件的代码,搜到的不同文章基本都是用的同一段代码,当我使用这段代码时候发现,它在生成压缩文件的时候并 ...

  4. linux 上传网页文件大小,Linux:上传未完成的文件 – 文件大小检查(scp / rsync)

    我通常最终会遇到以下情况:例如,我有一个来自相机的650 MB MPEG-2 .avi视频文件.然后,我使用ffmpeg2theora将其转换为Theora .ogv视频文件,比如说大小为150 MB ...

  5. 将一个压缩文件分成多个压缩文件;RAR文件分卷

    有时候需要上传压缩文件,但是限制了单个文件的大小,那我们怎么才能将一个比较大的压缩文件分割成多个压缩文件,从而符合要求的进行文件的上传呢?这里小编告诉你一个技巧. 工具/原料 电脑 winrar(一般 ...

  6. Linux kali系统使用fcrackzip/rarcrack破解zip/rar(或者zip 7z)类型的加密压缩文件

    一. fcrackzip工具 1.首先得有有zip加密的文档 zip -P 12345  demozip.zip 2再使用fcrackzip工具 密码就出来了 3.也可以指定字典来进行查找,字典可以是 ...

  7. 数据库服务器压缩文件,服务器数据库怎么压缩文件

    服务器数据库怎么压缩文件 内容精选 换一换 您可以借助报表服务制作各种各样的报表,无论是简单的还是复杂的报表,同时系统提供订阅功能方便用户对报表进行订阅.本文主要介绍RDS使用SSRS(Reporti ...

  8. 压缩文件夹_怎样压缩文件夹并发送

    只需要在需要压缩的文件右键打开菜单,然后选择[添加到压缩文件]选项,点击确定等待压缩文件完成,然后使用[复制]-[粘贴]的方法,将压缩文件粘贴到QQ.微信或者是添加到邮箱即可.以下是详细介绍: 1.选 ...

  9. python读压缩文件内容_Python读写压缩文件的方法

    问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...

最新文章

  1. 网站SEO优化之如何提升访客量?
  2. PPT学习资源(总)
  3. VTK:几何对象之GeometricObjectsDemo
  4. 我的博客今天6岁298天了,我领取了元老博主徽章
  5. 能用计算机解决的问题十个,计算机常见问题及解决方法,计算机十项常见故障...
  6. cad文字插件_超好用的4个CAD应用程序,让你提升工作幸福感,裂墙推荐
  7. python 分类变量xgboost_用于可解释机器学习的四个Python库
  8. python运行代码时标红_PyCharm 中写 Turtle代码没提示以及标黄问题
  9. 优秀的 HTML5 网站设计案例欣赏
  10. dalong(大龙燚火锅)
  11. Exception: ROM is missing for pong, see https://github.com/openai/atari-py#roms for instructions
  12. 联想台式计算机HDMI使用,联想电脑怎样连接电视
  13. 粒子滤波跟踪算法及实现
  14. 基于HTML+JavaScript+CSS计算机实验室预约管理系统网页设计 文档+html源码
  15. python的Gensim库如何使用
  16. OpenGL环境的配置(GLUT安装教程)
  17. 圣斗士星矢ol服务器端文件夹,圣斗士星矢ol完整安装指南
  18. 前端开发常见笔试题(附答案)
  19. ktv无线服务器,KTV,酒店无线wifi上网无线AP服务器
  20. 第一章 JVM与Java体系结构

热门文章

  1. 天津大学智能车队大一培训前准备(2022)
  2. php商城伪静态,友价商城nginx伪静态源码规则
  3. Arduino系列之米思齐旋钮控制LED灯亮度
  4. wos 文献被引_WoS和ESI数据库高被引论文的界定.pdf
  5. JME3播放背景音乐
  6. 程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略
  7. babylonjs 分部加载模型_基于Babylonjs自制WebGL3D模型编辑器
  8. [vue] transition animate.js
  9. 透透彻彻IoC(你没有理由不懂!)
  10. 2k分辨率显示器 浏览器_如何使浏览器使用显示器的完整分辨率?