小程序內(nèi)嵌h5上傳圖片(使用Generator)

小程序內(nèi)嵌h5上傳圖片就是個(gè)坑,折磨的我都沒脾氣了杯道,原生的input不能用虫几,必須用它的jsskd,且
step 1 調(diào)用wxChooseImage選擇圖片
step 2 調(diào)用wxUploadImage上傳圖片至微信服務(wù)器
step 3 后臺調(diào)用“微信獲取臨時(shí)素材”下載圖片到本地服務(wù)器
step 4 返回本地服務(wù)器地址到前端
wxChooseImage可以選擇多張照片第股,wxUploadImage卻只能單張上傳,且不支持并發(fā)(一張傳完再傳下張)话原。最先想到的就是使用Generator寫個(gè)無并發(fā)的遞歸
先寫個(gè)dome試試

function* gfunc (n) {  
  if (n < 10) yield n
  else return 0
  yield* gfunc(n+1)
}
var ddd = gfunc(7)
ddd.next()  // 7 
ddd.next() // 8 
ddd.next() // 9

加入異步

function* gfunc (n) {
  n = yield (n => new Promise((resolve, reject) => {
      if (n) { // 過濾第一次next
        setTimeout(() => {
          resolve(n)
        }, 1000)
      }
    }))(n) 
  yield* gfunc(n)
}
var ddd = gfunc()
ddd.next()

ddd.next(7).value.then(n => console.info(n))  // 7
ddd.next(8).value.then(n => console.info(n))  // 8

處理并發(fā)

ddd.next(10).value.then(n => {
  console.info(n)
  ddd.next(11).value.then(n => {
    console.info(n)
    ...
  }}
})

正式代碼

// 封裝的同步多文件上傳
function wxUploadImage(wxLids) {
  var gfunc = myGfuncUpload()
  gfunc.next()
  let i = 0 
  function handleResult (success, fail) {
    // 循環(huán)上傳多個(gè)localid(同步)
    gfunc.next(wxLids[i]).value.then(res => { 
      success(res) 
      i++
      handleResult(success, fail)
    }, fail)
  }
  return handleResult
} 
function* myGfuncUpload(wxLid) {
  // 上傳至微信服務(wù)器
  wxLid = yield (item => new Promise((resolve, reject) => {
    if (item) {
      wx.uploadImage({
      localId: item, // 需要上傳的圖片的本地ID夕吻,由chooseImage接口獲得
      isShowProgressTips: 1, // 默認(rèn)為1诲锹,顯示進(jìn)度提示
      success: (res) => {
        if (res.errMsg == "uploadImage:ok") {
          resolve({wxSid: res.serverId, wxLid: item})
        } else
          reject ({err: res.errMsg, wxLid: item})
      }})
    }
  }))(wxLid)
  // 等待下次上傳
  yield* myGfuncUpload(wxLid)
} 

調(diào)用

doHzfWxCheck()  // 微信授權(quán)
.then(() => wxChooseImage())  // 也封裝成了Promise
.then(wxLids => wxUploadImage(wxLids))
.then(e => e(({wxSid, wxLid}) => { 
    // 會被多次調(diào)用,把wxSid發(fā)請求給后臺涉馅,等著接收自己的服務(wù)器圖片路徑
    console.info('上傳成功归园,serverId: ', wxSid)
  }, ({err, wxLid}) => { 
    console.info('上傳失敗,原因: ', err)
})) 

8.3追加
小程序web-view在ios中稚矿,所經(jīng)過的頁面都要授權(quán)蔓倍,最終頁面才會授權(quán)成功
小程序web-view安卓中,第一個(gè)頁面就是授權(quán)頁面盐捷,必須刷新一次頁面才能授權(quán)成功(直接授權(quán)兩次不管用)
惡心呀,惡心呀默勾,坑啊碉渡,再也不要在小程序里內(nèi)嵌復(fù)雜的h5了,用mpvue也好母剥,原生也好滞诺,再也不這么干了ToT
.

微信jsskd api:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
后臺下載微信上傳的圖片:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738727

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市环疼,隨后出現(xiàn)的幾起案子习霹,更是在濱河造成了極大的恐慌,老刑警劉巖炫隶,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淋叶,死亡現(xiàn)場離奇詭異,居然都是意外死亡伪阶,警方通過查閱死者的電腦和手機(jī)煞檩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栅贴,“玉大人斟湃,你說我怎么就攤上這事¢苁恚” “怎么了凝赛?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坛缕。 經(jīng)常有香客問我墓猎,道長,這世上最難降的妖魔是什么祷膳? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任陶衅,我火速辦了婚禮,結(jié)果婚禮上直晨,老公的妹妹穿的比我還像新娘搀军。我一直安慰自己膨俐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布罩句。 她就那樣靜靜地躺著焚刺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪门烂。 梳的紋絲不亂的頭發(fā)上乳愉,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機(jī)與錄音屯远,去河邊找鬼蔓姚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛慨丐,可吹牛的內(nèi)容都是我干的坡脐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼房揭,長吁一口氣:“原來是場噩夢啊……” “哼备闲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捅暴,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤恬砂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蓬痒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泻骤,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年乳幸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞪讼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粹断,死狀恐怖符欠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓶埋,我是刑警寧澤希柿,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站养筒,受9級特大地震影響曾撤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晕粪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一挤悉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巫湘,春花似錦装悲、人聲如沸昏鹃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洞渤。三九已至,卻和暖如春属瓣,著一層夾襖步出監(jiān)牢的瞬間载迄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工抡蛙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留护昧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓粗截,卻偏偏與公主長得像捏卓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子慈格,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1、開啟公眾號開發(fā)者模式 公眾平臺的技術(shù)文檔目的為了簡明扼要的交代接口的使用遥金,語句難免苦澀難懂浴捆,甚至對于不同的讀者...
    good7758閱讀 1,513評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,769評論 25 707
  • 轉(zhuǎn)眼工作已經(jīng)超過二十五年,工作在變換稿械,年齡在增長选泻,從職場小美女變成了快退休的大媽,值得慶幸的是一直有顆渴望成長的不...
    嘉媽閱讀 327評論 4 2
  • 2200元支付給百惠溫總美莫,拿回發(fā)票页眯。下周有錢到賬在支付昆定尾款,超期4-5個(gè)月厢呵,確實(shí)太久了窝撵。感覺我在幫一個(gè)并不領(lǐng)情的人。
    致簡繁榮閱讀 311評論 0 0
  • 題目起得真有詩意襟铭,哈哈哈碌奉,只是想記錄今天發(fā)生的事情而已。明天的小目標(biāo):說夠100句話寒砖。 發(fā)貨的時(shí)候赐劣,懶散了哈,夢婷...
    林夕_2213閱讀 183評論 0 0