這篇文章給大家分享的是有關(guān)微信JS-SDK如何實(shí)現(xiàn)選取手機(jī)照片上傳功能的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)專注于徐匯網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供徐匯營(yíng)銷型網(wǎng)站建設(shè),徐匯網(wǎng)站制作、徐匯網(wǎng)頁(yè)設(shè)計(jì)、徐匯網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造徐匯網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供徐匯網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
1.配置微信JS-SDK相關(guān)文件
1)、JSSDk使用最新的1.2.0版本:https://res.wx.qq.com/open/js/jweixin-1.2.0.js。
ios網(wǎng)頁(yè)開發(fā)適配問題:
變化:1.2.0以下版本的JSSDK不再支持通過使用chooseImage api返回的localld以如:"img src=wxLocalResource://50114659201332”的方式預(yù)覽圖片。
適配建議:直接將JSSDK升級(jí)為1.2.0最新版本即可幫助頁(yè)面自動(dòng)適配,但在部分場(chǎng)景下可能無效,此時(shí)可以使用getLocalImgData 接口來直接獲取數(shù)據(jù)。
(后附詳解代碼)
2)、jsapiSign.js文件:
/** * 使用jssdk接口的頁(yè)面,必須引用該文件 * actionUrl:后臺(tái)服務(wù)請(qǐng)求地址 * url:微信jssdk授權(quán)頁(yè)面地址 */ $.post("/getJsapiSign", {'url':location.href.split('#')[0]}, function(data) { wx.config({ debug : false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會(huì)通過log打出,僅在pc端時(shí)才會(huì)打印。 appId : data.appid, // 必填,公眾號(hào)的唯一標(biāo)識(shí) timestamp : data.timestamp, // 必填,生成簽名的時(shí)間戳 nonceStr : data.noncestr, // 必填,生成簽名的隨機(jī)串 signature : data.signature,// 必填,簽名,見附錄1 jsApiList : [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'hideMenuItems', 'showMenuItems', 'hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem', 'translateVoice', 'startRecord', 'stopRecord', 'onRecordEnd', 'playVoice', 'pauseVoice', 'stopVoice', 'uploadVoice', 'downloadVoice', 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', 'getNetworkType', 'openLocation', 'getLocation', 'hideOptionMenu', 'showOptionMenu', 'closeWindow', 'scanQRCode', 'chooseWXPay', 'openProductSpecificView', 'addCard', 'chooseCard', 'openCard', 'getLocalImgData' ] }); wx.error(function(res) { alert("wx.config加載失敗"); }); }, 'json');
2.具體實(shí)現(xiàn)過程
1)、選取照片
這里使用微信 js-sdk 的 chooseImage 方法,得到照片在本地存儲(chǔ)的 id,十分簡(jiǎn)單:
2)、獲取照片數(shù)據(jù)
根據(jù)微信的官方開發(fā)文檔,得到的 localId 可以直接作為 img 元素的 src 屬性進(jìn)行顯示
3)、照片上傳
這里使用微信 js-sdk 的 uploadImage 方法
wx.chooseImage({ count: 1, // 默認(rèn)9 sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有 sourceType: ['album', 'camera'], // 可以指定來源是相冊(cè)還是相機(jī),默認(rèn)二者都有 success: function (res) { var localIds = res.localIds; // 返回選定照片的本地ID列表,localId可以作為img標(biāo)簽的src屬性顯示圖片 wx.uploadImage({ localId: localIds[0], // 需要上傳的圖片的本地ID,由chooseImage接口獲得 isShowProgressTips: 1, // 默認(rèn)為1,顯示進(jìn)度提示 success: function (res) { var medias = {'lid':localIds[0].toString(), 'sid':res.serverId}; $('#img_media').attr('src', medias.lid); },fail:function(res){ alert("上傳失敗"); } }); } });
3.iOS WKWebview 網(wǎng)頁(yè)開發(fā)適配
JSAPI相關(guān)適配
1)、將不再支持cache
變化:在WKWebview中將暫不支持cache jsapi。
適配建議:所有使用此api的開發(fā)者可去掉頁(yè)面相關(guān)邏輯。
2)、頁(yè)面通過LocalID預(yù)覽圖片
變化:1.2.0以下版本的JSSDK不再支持通過使用chooseImage api返回的localld以如:”img src=wxLocalResource://50114659201332”的方式預(yù)覽圖片。
適配建議:直接將JSSDK升級(jí)為1.2.0最新版本即可幫助頁(yè)面自動(dòng)適配,但在部分場(chǎng)景下可能無效,此時(shí)可以使用getLocalImgData 接口來直接獲取數(shù)據(jù)。
(目前JSSDk線上版本是 1.0.0 和 1.1.0,更新版本為1.2.0 ,https://res.wx.qq.com/open/js/jweixin-1.2.0.js )
if (window.__wxjs_is_wkwebview) { wx.getLocalImgData({ localId: localIds[0], // 圖片的localID success: function (res) { var localData = res.localData; // localData是圖片的base64數(shù)據(jù),可以用img標(biāo)簽顯示 localData = localData.replace('jgp', 'jpeg');//iOS 系統(tǒng)里面得到的數(shù)據(jù),類型為 image/jgp,因此需要替換一下 $('#img_media').attr('src', localData); },fail:function(res){ alert("顯示失敗"); } }); }
三、有使用JSSDK,并且使用了wx.config進(jìn)行權(quán)限授權(quán)需關(guān)注jsapi調(diào)用的失敗問題
變化:WKWebview的內(nèi)部實(shí)現(xiàn)變更使我們對(duì)微信內(nèi)的頁(yè)面jsapi權(quán)限管理做了一定邏輯上的調(diào)整,有極小可能會(huì)發(fā)生以前授權(quán)正常的jsapi獲取權(quán)限不正常,從而導(dǎo)致調(diào)用jsapi失敗。
適配建議:
1. iOS微信6.5.1,WKWebview在此版本中已知有以下問題:頁(yè)面使用HTML5的History API pushState; popstate; replaceState等控制頁(yè)面導(dǎo)航(典型的如單應(yīng)用頁(yè)面),同時(shí)使用JSSDK的wx.config為jsapi授權(quán),此時(shí)大幾率會(huì)出現(xiàn)jsapi因?yàn)闊o權(quán)限而調(diào)用失敗的問題。 在6.5.1中頁(yè)面若可能的情況下,可使用Anchor hash技術(shù)替換History技術(shù)來解決此問題。
2. iOS微信6.5.2及其之后版本,將不會(huì)存在以上問題,但不能100%確認(rèn)有使用到 history或hash技術(shù)更改頁(yè)面導(dǎo)航地址的頁(yè)面完全沒有此類問題,依然需要開發(fā)者注意關(guān)注此類問題。
感謝各位的閱讀!關(guān)于“微信JS-SDK如何實(shí)現(xiàn)選取手機(jī)照片上傳功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
網(wǎng)頁(yè)題目:微信JS-SDK如何實(shí)現(xiàn)選取手機(jī)照片上傳功能
轉(zhuǎn)載注明:http://aaarwkj.com/article26/godsjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站收錄、響應(yīng)式網(wǎng)站、微信小程序、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)