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

首頁 > 編程 > JavaScript > 正文

Element-UI中Upload上傳文件前端緩存處理示例

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

Element-UI對于文件上傳組件的功能點著重于文件傳遞到后臺處理,所以要求action為必填屬性。

但是如果需要讀取本地文件并在前端直接處理,文件就沒有必要傳遞到后臺,比如在本地打開一個JSON文件,利用JSON文件在前端進行動態展示等等。

下面就展示一下具體做法:

首先定義一個jsonContent, 我們的目標是將本地選取的文件轉換為JSON賦值給jsonContent

然后我們的模板文件是利用el-dialog和el-upload兩個組件組合:這里停止文件自動上傳模式:auto-upload="false"

 <el-button type="primary" @click="dialogVisible = true">Load from File</el-button> <el-dialog title="Load JSON document from file" :visible.sync="dialogVisible">  <el-upload :file-list="uploadFiles" action="alert" :auto-upload="false" multiple :on-change="loadJsonFromFile">   <el-button size="small" type="primary">Select a file</el-button>   <div slot="tip">upload only jpg/png files, and less than 500kb</div>  </el-upload>  <span slot="footer">   <el-button type="primary" @click="dialogVisible = false">cancel</el-button>   <el-button type="primary" @click="loadJsonFromFileConfirmed">confirm</el-button>  </span> </el-dialog>

最后通過html5的filereader對變量uploadFiles中的文件進行讀取并賦值給jsonContent

if (this.uploadFiles) {    for (let i = 0; i < this.uploadFiles.length; i++) {     let file = this.uploadFiles[i]     console.log(file.raw)     if (!file) continue     let reader = new FileReader()     reader.onload = async (e) => {      try {       let document = JSON.parse(e.target.result)       console.log(document)      } catch (err) {       console.log(`load JSON document from file error: ${err.message}`)       this.showSnackbar(`Load JSON document from file error: ${err.message}`, 4000)      }     }     reader.readAsText(file.raw)    }   }

為方便測試,以下是完整代碼:

<template> <div>  <el-button type="primary" @click="dialogVisible = true">Load from File</el-button> <el-dialog title="Load JSON document from file" :visible.sync="dialogVisible">  <el-upload :file-list="uploadFiles" action="alert" :auto-upload="false" multiple :on-change="loadJsonFromFile">   <el-button size="small" type="primary">Select a file</el-button>   <div slot="tip">upload only jpg/png files, and less than 500kb</div>  </el-upload>  <span slot="footer">   <el-button type="primary" @click="dialogVisible = false">cancel</el-button>   <el-button type="primary" @click="loadJsonFromFileConfirmed">confirm</el-button>  </span> </el-dialog></div> </template> <script>export default { data () {  return {   // data for upload files   uploadFilename: null,   uploadFiles: [],   dialogVisible: false  } }, methods: {  loadJsonFromFile (file, fileList) {   this.uploadFilename = file.name   this.uploadFiles = fileList  },  loadJsonFromFileConfirmed () {   console.log(this.uploadFiles)   if (this.uploadFiles) {    for (let i = 0; i < this.uploadFiles.length; i++) {     let file = this.uploadFiles[i]     console.log(file.raw)     if (!file) continue     let reader = new FileReader()     reader.onload = async (e) => {      try {       let document = JSON.parse(e.target.result)       console.log(document)      } catch (err) {       console.log(`load JSON document from file error: ${err.message}`)       this.showSnackbar(`Load JSON document from file error: ${err.message}`, 4000)      }     }     reader.readAsText(file.raw)    }   }   this.dialogVisible = false  } }}</script>

PS: 相關閱讀

https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 剑河县| 武安市| 西乡县| 芦溪县| 连云港市| 太保市| 手游| 平和县| 砀山县| 桑日县| 哈尔滨市| 平安县| 富裕县| 田东县| 临潭县| 分宜县| 龙州县| 东乡县| 即墨市| 曲水县| 萨迦县| 镇康县| 汝城县| 尤溪县| 柳河县| 福海县| 泾阳县| 本溪市| 佛坪县| 白城市| 双桥区| 巴林左旗| 玉树县| 瑞金市| 新津县| 收藏| 常州市| 朝阳区| 黄平县| 高邮市| 锦屏县|