<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      van-uploader拍照上傳多個文件報錯ERR_UPLOAD_FILE_CHANGED問題

      移動端使用van-uploader連續上傳兩個圖片,ajax接口也會出現報錯ERR_UPLOAD_FILE_CHANGED,這個地方還真要用到上一篇提供的方案,先把圖片轉成base64字符串,上傳前再轉成File對象。

      1.問題描述

      同上一篇el-upload拍照上傳多個文件報錯 ERR_UPLOAD_FILE_CHANGED問題,移動端使用van-uploader選擇多個文件一起上傳也遇到這個問題,報錯也一樣:ERR_UPLOAD_FILE_CHANGED

      2.問題分析

      這里的問題是瀏覽器兼容性問題,我用紅米手機自帶瀏覽器連續拍多張圖片,一起上傳沒有這個問題,Android套殼之后就不行,估計Android套殼使用的瀏覽器和紅米瀏覽器的內核不一樣,前者不支持這個特性,參考下面參考鏈接。

      3.解決方案

      拍照選擇文件的時候把文件轉成base64字符串同時清除input框內容,點確定的時候把base字符串還原成文件,然后傳給外面組件,這里是用store保存并傳數據的。

      van-uploader和el-upload有點區別,前者只有after-read,befor-read事件,沒有fiechange事件,這里使用原生的input標簽來實現這個功能。

      javascript關鍵代碼:

      //圖片轉base64
      const fileToBase64 = (file) => {
        return new Promise((resolve, reject) => {
          const reader = new FileReader()
          reader.readAsDataURL(file)
          reader.onload = () => resolve(reader.result)
          reader.onerror = (error) => reject(error)
        })
      }
      
      // base64轉圖片
      const base64ToFile = (base64: any, fileName: any) => {
        const arr = base64.split(',')
        const mime = arr[0].match(/:(.*?);/)[1]
        const bstr = atob(arr[1])
        let n = bstr.length 
        const u8arr = new Uint8Array(n)
        while (n--) {
          u8arr[n] = bstr.charCodeAt(n)
        }
        return new File([u8arr], fileName, { type: mime })
      }
      

      html關鍵代碼:

        <div class="full-screen list-container">
          <div class="content-wrapper photo-wrapper" :style="{marginTop: contentTop + 'px'}">
            <!-- <van-uploaderer v-model="photoStore.photoList" multiple/> -->
            <div class="container" @click="onClickPicture">
              <img class="image_picture" :src="getAssetURL('icon_picture.png')"/>
              <div class="text">上傳</div>
            </div>
            <input type="file" ref="refInput" accept="image/*" @change="onFileChange" class="file-packer" id="uploadFile" hidden>
          </div>
          <div class="image-wrapper">
            <div v-for="(item, index) in obj.fileList" :key="index" class="image-item">
              <img :src="item.img" alt="" class="item"/>
              <img :src="getAssetURL('icon_delete_photo.png')" alt="" class="delete" @click="onDelClick(index)"/>
            </div>
          </div>
          <div class="footer-wrapper">
            <div class="btn-box">
              <van-button type="primary" @click="onOk">確定</van-button>
            </div>
          </div>
        </div>
      
      const onFileChange = e => {
        fileToBase64(e.target.files[0]).then(res => {
          obj.fileList.push({img: res, name: e.target.files[0].name})
          refInput.value.value = ''
        })
      }
      
      const onOk = () => {
        const files = obj.fileList.map((item, i) => {
          return {file: base64ToFile(item.img, `_${i + 1}_${item.name}`),img: item.img} 
        })
        photoStore.setPhotoList(files)
        refInput.value.value = ''
        router.back()
      }
      

      最后結果:
      image

      4.總結

      文件上傳雖然可以使用html+javascript來實現,但是由于瀏覽器差異還是有很多的差異和兼容性問題。

      參考:
      1.https://stackoverflow.com/questions/57516930/prevent-html-file-input-from-selecting-files-in-google-drive-while-using-android

      posted @ 2024-06-26 11:04  nd  閱讀(338)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费无码肉片在线观看| 亚洲黄色第一页在线观看| 亚洲中文字幕日韩精品| 亚洲精品美女一区二区| 免费无码一区无码东京热| 国产亚洲AV电影院之毛片| 亚洲精品乱码久久观看网| 涩欲国产一区二区三区四区| 久久精品免费自拍视频| 2019nv天堂香蕉在线观看| 亚洲国产精品久久综合网| 我国产码在线观看av哈哈哈网站| 亚洲成av人片无码天堂下载| 免费国产高清在线精品一区| 国产成人精品白浆免费视频试看| 77se77亚洲欧美在线| 饥渴的熟妇张开腿呻吟视频| 国产精品中出一区二区三区| 亚洲乱理伦片在线观看中字| 婷婷丁香五月六月综合激情啪| 国产精品自拍视频免费看| 色8久久人人97超碰香蕉987| 九九热精品免费视频| 日本电影一区二区三区| 久久夜色精品久久噜噜亚| 国语精品自产拍在线观看网站| 好紧好湿好黄的视频| 国产午夜精品亚洲精品国产| 中文字幕久久精品波多野结| 97精品人妻系列无码人妻| 国产69久久精品成人看| 小伙无套内射老熟女精品| 日韩精品一区二区蜜臀av| 一区二区传媒有限公司| 国产成人综合网亚洲第一| 看黄a大片日本真人视频直播 | 久久这里只精品热免费99| 久久免费看少妇免费观看| 在线免费观看毛片av| 亚洲一区av无码少妇电影| 2019亚洲午夜无码天堂|