兼容ios和安卓的文件选择上传方式(H5)

2022-11-17  本文已影响0人  大号火龙果
fileUp() {
              const address = config.baseURL + '/h5-server/h5/base/train/supplier/notice/upload/file'
              const fileInput = document.createElement('input')
              const that = this
              fileInput.setAttribute('type', 'file');
              fileInput.setAttribute('style', 'display:none');
              let ua = navigator.userAgent.toLowerCase()
              let phone = ""
              if (ua.indexOf("android") != -1) {
                  phone = true //true是安卓 false是ios
              } else if (ua.indexOf("iphone") != -1) {
                  phone = false
              }
              fileInput.setAttribute('accept', phone == true ? '*/*' : '');
              fileInput.addEventListener('change', () => {
                  const file = fileInput.files[0];
                  const reader = new FileReader();
                  reader.readAsDataURL(file);
                  reader.onload = function() {
                      if (file.size / 1024 / 1024 > 80) {
                          console.log('文件大小不超过80Mb');
                          return;
                      }
                      const data = new FormData();
                      data.append('name', file);
                      let r = new XMLHttpRequest();
                      r.open("post", address);
                      uni.showLoading({
                          title: "上传中,请稍等..."
                      })
                      try {
                          r.onloadend = () => {
                              const con = JSON.parse(r.responseText)

                              upd({
                                  id: that.id,
                                  planFile: JSON.stringify(con.content)
                              }).then((res) => {
                                  uni.hideLoading()
                                  that.$u.toast('提交成功')
                                  setTimeout(() => {
                                      uni.navigateBack()
                                  }, 500)
                              })
                          }
                          r.send(data);
                      } catch (e) {
                          that.$u.toast(JSON.stringify(e))
                          //TODO handle the exception
                      }

                  };
              });
              const page = document.getElementById('page')
              page.appendChild(fileInput)
              fileInput.click();
          },
上一篇下一篇

猜你喜欢

热点阅读