zoukankan      html  css  js  c++  java
  • 微信端上传图片方式1

    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 }
     
  • 相关阅读:
    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
    提交本地项目到github
    php魔术方法和魔术常量
    zTree学习
    js跨域解决方案(转载)
    启动apache和tomcat端口被占用解决办法
    配置nginx+php
    php,nginx重启
    php自动加载
    php命名空间
  • 原文地址:https://www.cnblogs.com/future-eye/p/8267816.html
Copyright © 2011-2022 走看看