最近のプロジェクトでは、WeChat js-sdk の画像アップロード インターフェイスを使用しました。ここで要約してみましょう。
ここでjs APIを使用する基本的な構成を知ることができます
https://mp.weixin.qq.com/wiki
t=resource/res_main&id=mp1421141115&token=&lang=zh_CN
私は使用しませんcheckJsApi here 現在のクライアントのバージョンが指定された JS インターフェイスをサポートしているかどうかを確認します。OK。開発ドキュメントを見ると、js インターフェイスを呼び出すときに、権限検証設定を config インターフェイスを通じて直接挿入する必要があることがわかります
<code class="hljs cs">wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });</code>
設定内のパラメータを取得するコードは次のとおりです。chooseImage と のみを使用します。ここでは、chooseImage インターフェースを使用して写真を撮影したり、携帯電話のアルバムから選択したりするために、Picture インターフェースを使用し、uploadImage インターフェースを使用して写真をアップロードします。この 2 つを jsApiList に記述するだけで、accessToken を通じてチケットを取得できます。は次のとおりです
<code class="hljs avrasm">import java.util.UUID; import java.util.Map; import java.util.HashMap; import java.util.Formatter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.io.UnsupportedEncodingException; public class WxConfig { public static void main(String[] args) { String jsapi_ticket = "jsapi_ticket"; // 注意 URL 一定要动态获取,不能 hardcode String url = "http://example.com"; Map<string, string=""> ret = sign(jsapi_ticket, url); for (Map.Entry entry : ret.entrySet()) { System.out.println(entry.getKey() + ", " + entry.getValue()); } }; public static Map<string, string=""> sign(String jsapi_ticket, String url) { Map<string, string=""> ret = new HashMap<string, string="">(); String nonce_str = create_nonce_str(); String timestamp = create_timestamp(); String string1; String signature = ""; //注意这里参数名必须全部小写,且必须有序 string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "×tamp=" + timestamp + "&url=" + url; System.out.println(string1); try { MessageDigest crypt = MessageDigest.getInstance("SHA-1"); crypt.reset(); crypt.update(string1.getBytes("UTF-8")); signature = byteToHex(crypt.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } ret.put("url", url); ret.put("jsapi_ticket", jsapi_ticket); ret.put("nonceStr", nonce_str); ret.put("timestamp", timestamp); ret.put("signature", signature); return ret; } private static String byteToHex(final byte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x", b); } String result = formatter.toString(); formatter.close(); return result; } private static String create_nonce_str() { return UUID.randomUUID().toString(); } private static String create_timestamp() { return Long.toString(System.currentTimeMillis() / 1000); } } </string,></string,></string,></string,></code>
インジェクション許可の検証が成功すると、準備完了インターフェイスに入り、準備完了インターフェイスで必要な操作を続行するだけです
<code class="hljs cs">public static String getTicket(String accessToken) throws ParseException, IOException { public final static String sign_ticket_create_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi"; JSONObject jsonObject = new JSONObject(); JSONObject postjson=new JSONObject(); String ticket =null; String url = sign_ticket_create_url.replace("ACCESS_TOKEN",accessToken); System.out.print("url="+url); String ticketurl =""; try { jsonObject = WeixinUtil.httpsRequest(url, "POST",postjson.toString()); ticket= jsonObject.getString("ticket"); System.out.println("ticket:"+ticket); }catch (Exception e) { e.printStackTrace(); } return ticket; };</code>
上記のコードを通じて、画像をWeChatサーバーにアップロードしましたただし、WeChat サーバーにアップロードした画像は 3 日間しか保存できないため、アップロード後にローカル サーバーにダウンロードする必要があります。ここでは WeChat ダウンロード マルチメディア インターフェイスが使用されます
http://file.api.weixin.qq。 .com/cgi-bin/media/get?
access_token=ACCESS_TOKEN&media_id=MEDIA_ID
where media_id これは上記のサーバー ID なので、画像をローカルにダウンロードできます。コードは次のとおりです
<code class="hljs javascript">wx.ready(function(){ //拍照或从手机相册中选图接口 wx.chooseImage({ count: 1, // 最多能选择多少张图片,默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 //上传图片接口 wx.uploadImage({ localId: localIds.toString(), // 需要上传的图片的本地ID,由chooseImage接口获得 isShowProgressTips: 1, // 默认为1,显示进度提示 success: function (res) { var serverId = res.serverId; // 返回图片的服务器端ID } }); } }); });</code>
これで js- が完了します。 SDKイメージのアップロードとダウンロード。