国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

IE9 elementUI文件上傳的問題解決

2019-11-19 12:41:21
字體:
來源:轉載
供稿:網友

問題: IE9中無法使用FormData

思路

  • 基于上面的問題,需要使用form表單上傳文件
  • form表單上傳會引起頁面的刷新,因此需要動態添加一個iframe來避免頁面刷新
  • from表單上傳之后需要調用回調,此時需要監聽iframe的onload事件

  • 文件上傳之后的返回值 Content-Type值不能是application/json 這會導致IE去解析返回結果,最終調用文件的保存或者打開,此處需要與后端協商將Content-Type改為text/plain
  • 如果需要圖片回顯,回顯的圖片路徑中有有query參數,如果有多個參數會出現&,但是返回結果顯示在iframe中所以&會被當做HTML解析為&所以回顯之前需要將此處轉換回來

問題解決

項目使用VUE編寫,UI是ElementUI,但是Element官方明確了upload方面是不支持IE9的,看源碼的意思是已經擱置了iframe上傳的后續開發

改用vue-upload-component 作者對IE9專門做了兼容,就是使用起來理解成本有點兒高

如何觸發上傳

通過ref獲取upload實例,在添加文件時 激活上傳

this.$refs.upload.active = true

如何判斷當前上傳的狀態(添加,更新,刪除,上傳成功,上傳失敗)

每次上傳的狀態變化時 都會調用@input-file綁定的回調,形參是newFile, oldFile,通過新舊文件的對比來得到當前的狀態,感覺有點兒反策略模式的意思,自己通過元狀態的組合來得到當前狀態,習慣的話覺得還是挺有意思的

inputFile(newFile, oldFile) { // 舊文件活躍 新文件不活躍 此時上傳過程完成 if (newFile && oldFile && !newFile.active && oldFile.active) {  this.$refs.upload.active = false  // 獲得相應數據  let res = '{}'  // 此處判斷相對簡單,可以參考jquery.form.js中做的判斷  if (/<pre/.test(newFile.response)) {   res = />(.*)</.exec(newFile.response)[1]  }  res = JSON.parse(res)  if (res.code !== 200) {   if (res.code === 402) {    this.$route.push('/login')    return   }   Message.error(res.message)  } else {   Message.success('上傳成功')   // 回顯圖片   this.upload.url = res.data.url.replace(/&/g, '&')  }  if (newFile.xhr) {   // 獲得響應狀態碼   console.log('status', newFile.xhr.status)  } } // 添加文件 if (newFile && !oldFile) {  this.$refs['upload' + this.index].active = true }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦东新区| 宁城县| 大港区| 凤阳县| 仙桃市| 乌兰察布市| 镇康县| 黄平县| 大关县| 丰镇市| 延吉市| 原平市| 普兰县| 高雄市| 贵溪市| 利川市| 天台县| 北宁市| 来安县| 桂东县| 宜丰县| 安宁市| 营口市| 班玛县| 东辽县| 遂川县| 高碑店市| 察隅县| 呼图壁县| 内黄县| 乐至县| 霍山县| 横峰县| 新民市| 瑞安市| 通辽市| 海阳市| 克什克腾旗| 奈曼旗| 裕民县| 潼南县|