1.H5的图片上传方式

前台代码:

 1 <form action="<%=basePath%>open/njResult.shtml"  id="njForm"  method="post">
 2      <input id="photoPath"  type="hidden" name="photoPath">
 3   </form>
 4         <div class="noUld_upB g-clear">
 5                 <div class="noUld_up">
 6                       <img class="noUld_up_img" data-up="img" src="<%=basePath %>resources/img/all/other_addImg.png">
 7                       <div class="noUld_up_cnt g-clear">
 8                           <div class="fl">请上传图片</div>
 9                           <div class="noUld_up_cnt_r"><span class="btn-s">上传</span><input type="file" id="notPassPhoto" data-up="file"></div>
10                      </div>
11                  </div>
12       
13         <div class="yesCek_submit">
14           <a id="njSumit" href="javascript:void(0)" class="btn-b">提交</a>
15         </div>

JS代码:

 1 //图片上传change事件
 2         $("#notPassPhoto ").change(function(){
 3             uploadBtnChange("notPassPhoto","photoPath");//上传图片改变时,调用base64压缩方法
 4
 5         });
 6 $('#njSumit').click(function(){
 7     var photoPath = document.getElementById('photoPath').value;//获得压缩后的base64数据
 8 if(photoPath){
 9                     var ranparam = Math.random();
10                     $.ajax({
11                             url:"njNotPassPhoto.shtml",
12                             type: "POST",
13                             data:{'notPassphotoPath':photoPath,"ranparam":ranparam}, //把base64数据传到后台,由后台解码上传到服务器
14                             async : false,
15                         cache : false,
16                             success:function(data) {
17                                 if(data.status==200){
18                                     $("#photoPath").val(data.photoPath);//获得了传回来的图片路径,用于保存到数据库
19                                     $("#njForm").submit();//表单提交
20                                 }else{
21                                       alert(data.msg);
22                                   }
23                              },
24                             error: function(XMLHttpRequest, textStatus, errorThrown){
25                                 alert(XMLHttpRequest.readyState + XMLHttpRequest.status + XMLHttpRequest.responseText);
26                         }
27                           });
28                     }else{
29                                 alert("请上传照片")
30                                 return
31                             }
32             }
33
34         });
35  function uploadBtnChange(id,val){
36             var scope = this;
37             if(window.File && window.FileReader && window.FileList && window.Blob){
38                 // 获取上传file
39                 var filefield = document.getElementById(id),
40                     file = filefield.files[0];
41                 // 获取用于存放压缩后图片base64编码
42                 var compressValue = document.getElementById(val);
43                 processfile(file,compressValue);
44             }else{
45                 alert("此浏览器不完全支持压缩上传图片");
46             }
47         }
48
49         function processfile(file,compressValue) {
50             var reader = new FileReader();
51             reader.onload = function (event) {
52                 var blob = new Blob([event.target.result]);
53                 window.URL = window.URL || window.webkitURL;
54                 var blobURL = window.URL.createObjectURL(blob);
55                 var image = new Image();
56                 image.src = blobURL;
57                 image.onload = function() {
58                     var resized = resizeMe(image);
59                     compressValue.value = resized;
60                 }
61             };
62             reader.readAsArrayBuffer(file);
63         }
64
65         function resizeMe(img) {
66             // 压缩的大小
67             var max_width = 800;
68             var max_height = 600;
69
70             var canvas = document.createElement('canvas');
71             var width = img.width;
72             var height = img.height;
73             if(width > height) {
74                 if(width > max_width) {
75                     height = Math.round(height *= max_width / width);
76                     width = max_width;
77                 }
78             }else{
79                 if(height > max_height) {
80                     width = Math.round(width *= max_height / height);
81                     height = max_height;
82                 }
83             }
84
85             canvas.width = width;
86             canvas.height = height;
87
88             var ctx = canvas.getContext("2d");
89             ctx.drawImage(img, 0, 0, width, height);
90             // 压缩率
91             return canvas.toDataURL("image/jpeg",0.92);
92         }     

后台代码:

 1 /**
 2      * Base64解码上传
 3      */
 4     @RequestMapping(value = "/njNotPassPhoto", method = RequestMethod.POST)
 5     @ResponseBody
 6     public Map<String, Object> njNotPassPhoto(String notPassphotoPath) {
 7         try {
 8             String photoPath = FileUploadUtils.getPath(notPassphotoPath);
 9             resultMap.put("status", 200);
10             resultMap.put("photoPath", photoPath);
11             return resultMap;
12         } catch (Exception e) {
13             e.printStackTrace();
14             resultMap.put("status", 500);
15             resultMap.put("msg", "服务器异常");
16         }
17         return null;
18
19     }

FileUploadUtils工具类代码:
 1 public class FileUploadUtils {
 2     private static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
 3
 4     public static String getPath(String base64) throws IOException {
 5
 6         String saveFileName = System.currentTimeMillis()
 7                 + RandomStringUtils.random(6, true, true) + ".jpg";
 8         Date date = new Date();
 9         String datePath = format.format(date);
10         String upload = "D:\\suyi\\photo\\" + datePath + "\\";
11
12         String path = upload + saveFileName;
13         // base64图片解码
14         // 对字节数组字符串进行Base64解码并生成图片
15         if (base64 == null) // 图像数据为空
16             return "";
17         base64 = base64.replaceAll("data:image/jpeg;base64,", "");
18         BASE64Decoder decoder = new BASE64Decoder();
19         byte[] b = decoder.decodeBuffer(base64);
20         for (int i = 0; i < b.length; ++i) {
21             if (b[i] < 0) {// 调整异常数据
22                 b[i] += 256;
23             }
24         }
25
26         File dir = new File(upload);
27         if (!dir.exists()) {
28             dir.mkdirs();
29         }
30         String fileName = path;
31         File file = new File(fileName);
32         OutputStream out = new FileOutputStream(file);
33         out.write(b);
34         out.flush();
35         out.close();
36         String ImagePath = "/suyi/showImage?imgId=" + datePath + "_"
37                 + saveFileName;
38         return ImagePath;
39
40     }
41 }

 

转载于:https://www.cnblogs.com/future-eye/p/8267816.html

微信端上传图片方式1相关推荐

  1. 微信端图片上传方式2

    调用微信接口JS-SDK方式 前台代码: 1 <div class="link_cameraB"> 2 <img class="link_camera& ...

  2. php微信手机端上传图片,手机Wap微信端上传单图和上传多图的DEMO

    在手机端或者微信端的论坛或者报名等界面需要上传头像或者多张图片信息等.这个时候就需要用到手机端的上传图片功能,现在微信端也可以使用input file功能了.多图上传使用的都是ajax方式.ajax返 ...

  3. 基于vue + axios + lrz.js 微信端图片压缩上传

    业务场景 微信端项目是基于Vux + Axios构建的,关于图片上传的业务场景有以下几点需求: 1.单张图片上传(如个人头像,实名认证等业务) 2.多张图片上传(如某类工单记录) 3.上传图片时期望能 ...

  4. Android上传文件到服务器500,使用WebUploader解决安卓微信浏览器上传图片中遇到的bug...

    摘自个人博客:走啊走的记录,欢迎点击查看,效果更佳! 微信浏览器上传图片bug的原因 微信在新版本中采用的是自己的X5内核浏览器,而在较老的版本中还有可能是安卓的原生浏览器.具体的环境我也不太了解,但 ...

  5. 使用WebUploader解决安卓微信浏览器上传图片中遇到的bug

    微信浏览器上传图片bug的原因 微信在新版本中采用的是自己的X5内核浏览器,而在较老的版本中还有可能是安卓的原生浏览器.具体的环境我也不太了解,但是经过实际多台安卓机型的测试,我采取的方案可以基本确保 ...

  6. python企业微信回调_python 微信企业号-回调模式接收微信端客户端发送消息并被动返回消息...

    说明:此代码用于接收手机微信端发送的消息 #-*- coding:utf-8 -*- from flask import Flask,request from WXBizMsgCrypt import ...

  7. uni app 录音结束监听_全新重构,uni-app实现微信端性能翻倍

    多次论证.数月研发,我们重写部分Vue底层.重构uni-app框架,实现了微信端性能翻倍及更多Vue语法支持. 背景 uni-app在初期借鉴了mpvue,实现了微信小程序端的快速兼容,感谢美团点评团 ...

  8. 前端使用微信sdk上传图片的坑,及万千种方法比较实用的一种,亲测有效

    vue 公众端使用微信sdk上传图片大坑 第一个坑 第二个坑 第一个坑 使用微信sdk拿到的图片并没有base64的前缀 所以我们需要自己加 iSrc = 'data:image/jpeg;base6 ...

  9. JS监听手机物理返回键(及IOS微信端的bug)

    需求场景 有一天,头儿给我提了这样一个需求: 无论页面如何跳转,在首页的时候再按返回,直接退出... 解决思路 关闭网页好说,由于我们的项目是微信公众号,直接调用微信浏览器的内置函数: WeixinJ ...

最新文章

  1. c java 的关系,c#与c、java的关系
  2. java中全大写字符_Java 大写字符串中的字符
  3. RSA加密解密简单使用
  4. HiveSQL常用数据处理语句
  5. [转]一步步搭建Ubuntu环境——dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题——安装Flashplayer出错 ------不错...
  6. linux6如何分区,CentOS6.9安装 硬盘分区方案与分区步骤
  7. linux major头文件_Linux的字符设备
  8. 文档服务器备份吗,本地资料和云服务器备份吗
  9. 求字符串的最小正周期
  10. 意凡社:盘点那些令网赚者疯狂的时代!
  11. gaussian软件linux下载,Gaussian软件下载地址及安装说明
  12. 遭遇scvhost.exe,qsetup.exe,dsound.dll,hnetcfg.dll,olepro32.dll等1
  13. java 视频截图_获取视频截图
  14. 模型相关:3DMax导出FBX模型导入Unity后旋转中心不在模型中心的相关问题
  15. c语言实验作业感想,c语言程序报告实验总结(共10篇).docx
  16. 机器视觉1:图像预处理与瑕疵检测
  17. Operator基础:2: Operator SDK安装
  18. 码率、帧率和I B P帧
  19. FILCO:蓝牙键盘配对教程
  20. stm32 f105 RBT6 建立工程头文件

热门文章

  1. html5场景编辑工具,3款容易上手的HTML5编辑工具推荐~
  2. html让下拉条消失,CSS 实现隐藏滚动条同时又可以滚动
  3. js中加入php读取文件名,js获取文件里面的所有文件名(实例)
  4. ihtml2document能不能根据id获取dom_回到基础:什么是DOM及DOM操作?
  5. 计算机视觉算法——Transformer学习笔记
  6. 根据ip获得国家,省,城市,运营商
  7. ONE- Open Navigator Engine 开放式浏览器引擎
  8. 从玉农业谋定塞外-丰收节交易会·林裕豪:巴彦淖尔深圳签约
  9. js 为什么0.1+0.2不等于0.3
  10. BZOJ.4738.[清华集训2016]汽水(点分治 分数规划)