热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图片压缩图片上传

1functiongetObjectURL(file){2varurlurl;3if(window.createObjectURL!undefined
  1 function getObjectURL(file){
2 var url = url;
3 if(window.createObjectURL != undefined){
4 url = window.createObjectURL(file);
5 }else if(window.URL != undefined){
6 url = window.URL.createObjectURL(file);
7 }else if(window.webkitURL != undefined){
8 url = window.webkitURL.createObjectURL(file);
9 }
10 return url;
11 }
12 //获取图片的src方法
13
14 var inputFile = $('.form_upload_input');
15
16 inputFile.on('change',function(){
17
18 var that = this.files,
19 i=0,
20 self=$(this),
21 filesLen=that.length;
22
23 $('.imgupload_progress[for='+self.attr('for')+']').show();
24 self.parent('span').hide;
25 for(i=0; i){
27 (function(i){
29 var newImg = new Image();
30 var w = 0,n=0,h=0;
31 newImg.src = getObjectURL(that[i]);//获取此次上传图片的地址
32 var M = that[i].size;//获取图片的大小
33 M = M/1024;
34 M = M/1024;//换算成M为单位的图片
36 newImg.Onload= function(){
37 w = newImg.naturalWidth;//获取上传图片的宽度
38 h = newImg.naturalHeight;//获取上传图片的高度
39 if( M > 2){//图片的大小大于2M就让他的宽度*0.8,用来限制图片压缩时图片的做大宽度
40 w *= 0.8;
41 }
43 if(M <= 2){ //图片小于2M不做压缩处理
44 var f = new FormData();//创建 formdate 对象,利用 FormData 对象,我们可以通过 Javascript 用一些键值对来模拟一系列表单控件,
                            //我们还可以使用 XMLHttpRequest 的 send() 方法来异步的提交表单。与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件。
45 f.append('upload_img',that[i]);// that[i]中已经包含了用户所选择的文件 50 var xhr = new XMLHttpRequest(); 51 xhr.open('POST', 'url'); 52 xhr.Onload= function () { 53 if (xhr.status === 200) { 54 // self.attr('value', ''); 55 var data = $.parseJSON(xhr.responseText); 80 } 81 }; 82 xhr.Onerror= function () { 83 $('.imgupload_progress[for='+self.attr('for')+']').hide(); 84 self.parent('span').show(); 85 $.messager.alert('提示', '图片上传失败', 'info'); 86 }; 87 xhr.upload.Onprogress= function (e) { 88 // 上传进度 89 var percentComplete = ((e.loaded / e.total) || 0) * 100; 90 }; 91 xhr.send(f); 92 93 }else{//图片压缩处理 94 n = 0.7; 95 lrz(that[i], {width:w,fieldName: 'upload_img',quality: n}).then(function(rst){ 96 var xhr = new XMLHttpRequest(); 97 xhr.open('POST', 'url'); 98 xhr.Onload= function () { 99 if (xhr.status === 200) {100 126 } 127 };128 xhr.Onerror= function () {129 $('.imgupload_progress[for='+self.attr('for')+']').hide();130 self.parent('span').show();131 $.messager.alert('提示', '图片上传失败', 'info');132 };133 xhr.upload.Onprogress= function (e) {134 // 上传进度135 var percentComplete = ((e.loaded / e.total) || 0) * 100;136 };137 138 // 添加参数139 rst.formData.append('fileLen', rst.fileLen);140 141 // 触发上传142 xhr.send(rst.formData);143 144 /* ==================================================== */145 return rst;146 });147 }148 console.log(w,h,i); //输出图片的宽度、高度、循环图片该图片下标 153 } 155 })(i);158 } 159 });

 ps:需要引入


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
author-avatar
当初
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有