• 微信端图片上传方式2


    调用微信接口JS-SDK方式

    前台代码:

    1 <div class="link_cameraB">
    2             <img class="link_camera" data-up="img" src="img/all/link_camera.png" id="infoByOCR" onclick="photo(1)"   >点击时调用方法photo(type)
    3 </div>

    JS代码

      1  function link_init() {
      2     CompareVersion();
      3     var wxopenid = getcookie("wxopenid");
      4     var access_code = GetQueryString("code");
      5     if (wxopenid == "" || wxopenid == null || wxopenid == "null") {
      6         var fromurl = location.href;
      7         if (access_code == null) {
      8             var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="
      9                     + getAppId()
     10                     + "&redirect_uri="
     11                     + encodeURIComponent(fromurl)
     12                     + "&response_type=code&scope=snsapi_base&state=STATE%23wechat_redirect&connect_redirect=1#wechat_redirect";
     13             location.href = url;
     14         } else {
     15             $.ajax({
     16                 type : "get",
     17                 url : "/suyi/open/getOpenId.shtml",
     18                 async : false,
     19                 cache : false,
     20                 data : {
     21                     code : access_code
     22                 },
     23                 dataType : "json",
     24                 success : function(result) {
     25                     if (result != null && result.result == 1) {
     26                         addcookie("wxopenid", result.openId, 360000);
     27                         $("#openId").val(result.openId);
     28                         init();
     29                     } else {
     30                         location.href = fromurl;
     31                     }
     32                 }
     33             });
     34         }
     35     } else {
     36         $("#openId").val(wxopenid);
     37         init();
     38     }//用于微信openid的获取 
    39 var link = location.href; 40 $.ajax({ 41 type : "get", 42 url : "/suyi/open/getSign.shtml", 43 async : false, 44 cache : false, 45 data : { 46 link : link 47 }, 48 dataType : "json", 49 success : function(result) { 50 if (result != null && result.result == 1) { 51 wx.config({ 52 debug : false, 53 appId : result.appId, 54 timestamp : result.sign.timestamp, 55 nonceStr : result.sign.nonceStr, 56 signature : result.sign.signature, 57 jsApiList : [ "checkJsApi", "onMenuShareTimeline", 58 "onMenuShareAppMessage", "onMenuShareQQ", 59 "onMenuShareWeibo", "onMenuShareQZone", 60 "hideMenuItems", "showMenuItems", 61 "hideAllNonBaseMenuItem", "showAllNonBaseMenuItem", 62 "translateVoice", "startRecord", "stopRecord", 63 "onVoiceRecordEnd", "playVoice", "onVoicePlayEnd", 64 "pauseVoice", "stopVoice", "uploadVoice", 65 "downloadVoice", "chooseImage", "previewImage", 66 "uploadImage", "downloadImage", "getNetworkType", 67 "openLocation", "getLocation", "hideOptionMenu", 68 "showOptionMenu", "closeWindow", "scanQRCode", 69 "chooseWXPay", "openProductSpecificView", 70 "addCard", "chooseCard", "openCard" ] 71 }); 72 } else { 73 alert("u9875u9762u52a0u8f7du5931u8d25"); 74 } 75 }, 76 error : function(data) { 77 alert("u8fdeu63a5u5931u8d25uff01"); 78 } 79 }); 80 }  //获得微信接口一些功能的授权 81 82 function init() { 83 // fastclick,使移动端点击没有延迟 84 FastClick.attach(document.body); 85 86 } 91 function photo(type) { 92 var images = { 93 localId : [], 94 serverId : [] 95 }; 96 wx.chooseImage({ 97 count : 1, 98 sizeType : [ "original", "compressed" ], 99 sourceType : [ "album", "camera" ], 100 success : function(res) { 101 var localIds = res.localIds; 102 images.localId = res.localIds; 103 var i = 0, length = images.localId.length; 104 function upload() { 105 wx.uploadImage({ 106 localId : images.localId[i].toString(), 107 success : function(res) { 108 i++; 109 images.serverId.push(res.serverId); 110 var indata = { 111 "media_id" : res.serverId, 112 114 }; 115 $.post("/suyi/open/getPhoto.shtml", indata, function( 116 data) { 117 if (data.result == 0) { 118 alert("u63d0u4ea4u5931u8d25"); 119 } else if(data.result==1) { 120 var path = data.path //获得传回来的地址 134 } 137 138 }, "json"); 139 if (i < length) { 140 upload(); 141 } 142 }, 143 fail : function(res) { 144 alert(JSON.stringify(res)); 145 } 146 }); 147 } 148 upload(); 149 } 150 }); 151 }

    后台代码:

    // TODO 微信端上传图片
        @RequestMapping(value = "/getPhoto", method = RequestMethod.POST)
        @ResponseBody
        public Object getPhoto(String media_id,String ocr,HttpServletRequest request,
                HttpServletResponse response) throws NoSuchAlgorithmException {
            String requestUrl = "https://api.weixin.qq.com/cgi-bin/media/get?access_token="
                    + WeixinUtil.getAccessToken() + "&media_id=" + media_id;
            InputStream inputStream = null;
            String saveFileName = null;
            PrintWriter writer = null;
            JSONObject obj = new JSONObject();
            try {
                writer = response.getWriter();
                URL url = new URL(requestUrl);
                HttpURLConnection httpUrlConn = (HttpURLConnection) url
                        .openConnection();
                httpUrlConn.setDoOutput(false);
                httpUrlConn.setDoInput(true);
                httpUrlConn.setUseCaches(false);
                httpUrlConn.setRequestMethod("POST");
                httpUrlConn.connect();
                // 将返回的输入流转换成字符串
                inputStream = httpUrlConn.getInputStream();
                byte[] data = new byte[1024];
                int len = 0;
                FileOutputStream fileOutputStream = null;
                saveFileName = System.currentTimeMillis()
                        + RandomStringUtils.random(6, true, true) + ".jpg";
                Date date = new Date();
                String datePath = format.format(date);
                String upload = "D:\suyi\photo\" + datePath + "\";
                String path = upload + saveFileName;
                File dir = new File(upload);
                if (!dir.exists()) {
                    FileUtils.forceMkdir(dir);
                }
                try {
                    fileOutputStream = new FileOutputStream(path);
                    while ((len = inputStream.read(data)) != -1) {
                        fileOutputStream.write(data, 0, len);
                    }
                    fileOutputStream.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (inputStream != null) {
                        try {
                            inputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        
                    }
                    if (fileOutputStream != null) {
                        try {
                            fileOutputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
                String Path="/suyi/showImage?imgId=" + datePath + "_"
                        + saveFileName;
                obj.put("result", 1);
                obj.put("path", Path);
                
            } catch (Exception e) {
                e.printStackTrace();
                obj.put("result", 0);
            } finally {
                writer.print(obj);
                if (writer != null) {
                    writer.close();
                }
            }
            return null;
        }
  • 相关阅读:
    线程+IO流
    jiava trim()
    statement 的延伸 ----》PreparedStatement
    java中math的用法
    java中获取所有文件--(递归调用)
    编写一个JAVA类,用于计算两个日期之间的周数。
    java中数组排序.知识点
    javascript 常用功能总结
    jquery
    创建 HTML内容
  • 原文地址:https://www.cnblogs.com/future-eye/p/8267845.html
Copyright © 2020-2023  润新知