您好,登錄后才能下訂單哦!
本篇內容介紹了“vue如何使用Element el-upload組件”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一、基本使用
二、圖片數量控制
三、圖片格式限制/可以選中多張圖片
補充:在vue項目中使用element-ui的Upload上傳組件
最近研究了一下 el-upload組件 踩了一些小坑 寫起來大家學習一下
很經常的一件事情 經常會去直接拷貝 element的的組件去使用 但是用到上傳組件時 就會遇到坑了
如果你直接去使用upload 你肯定會遇見這個錯誤
而且 上傳的圖片 可能會突然消失 這時候如果你沒有接口 你是完全不知道為什么移除的 所以 無接口時 只能去猜測是不是因為跨域報錯 導致圖片消失
最終去拿公司的地址調完接口,答案是對的 action="https://jsonplaceholder.typicode.com/posts/" 這是element中的action參數 用html 時 他會去調用ajax 使同源策略不同導致報錯。
一般呢公司都會提供一個 轉圖片為url格式的地址鏈接 你只需要去調用它 保存下來就好了, 但是可能會遇到需要token 權限 ,這時候很少去做的事情來了,一般沒有去直接通過組件帶token,所以要通過 el-upload組件去攜帶token
<el-upload action="https://xxxx地址" :headers="importHeaders" > </el-upload> import {getToken} from '@/utils/token' data() { return { importHeaders: {token: getToken()}, }; },
<el-upload action="https://security.brofirst.cn/api/common/upload" :headers="importHeaders" :limit="limit" :on-exceed="masterFileMax" > <i class="el-icon-plus"></i> </el-upload> // 最多上傳幾張圖片 masterFileMax(files, fileList) { console.log(files, fileList); this.$message.warning(`請最多上傳 ${this.limit} 個文件。`); },
<el-upload accept=".JPG, .PNG, .JPEG,.jpg, .png, .jpeg" multiple > <i class="el-icon-plus"></i> </el-upload>
例子
<el-upload action="https://xxxx" :headers="importHeaders" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :on-success="handleAvatarSuccess" :limit="limit" :on-exceed="masterFileMax" accept=".JPG, .PNG, .JPEG,.jpg, .png, .jpeg" multiple > <i class="el-icon-plus"></i> </el-upload> <script> import {getToken} from '@/utils/token' export default { name:'feedback', data() { return { importHeaders: {token: getToken()}, images:[], limit:9 }; }, methods: { //刪除圖片 handleRemove(file, fileList) { const idx= this.images.findIndex(it=>it===file.response.data.fullurl) this.images.splice(idx,1) }, handlePictureCardPreview(file) { this.dialogImageUrl = file.url; this.dialogVisible = true; }, // 上傳成功后的數據 handleAvatarSuccess(response, file, fileList){ console.log(response, file, fileList); if(response.code===1){ this.images.push(response.data.fullurl) } }, // 最多上傳幾張圖片 masterFileMax(files, fileList) { console.log(files, fileList); this.$message.warning(`請最多上傳 ${this.limit} 個文件。`); } } }; </script>
<el-upload v-else class='ensure ensureButt' :action="importFileUrl" :data="upLoadData" name="importfile" :onError="uploadError" :onSuccess="uploadSuccess" :beforeUpload="beforeAvatarUpload" > <el-button size="small" type="primary">確定</el-button>
其中importFileUrl是后臺接口,upLoadData是上傳文件時要上傳的額外參數,uploadError是上傳文件失敗時的回掉函數,uploadSuccess是文件上傳成功時的回掉函數,beforeAvatarUpload是在上傳文件之前調用的函數,我們可以在這里進行文件類型的判斷。
data () { importFileUrl: 'http:dtc.com/cpy/add', upLoadData: { cpyId: '123456', occurTime: '2017-08' } }, methods: { // 上傳成功后的回調 uploadSuccess (response, file, fileList) { console.log('上傳文件', response) }, // 上傳錯誤 uploadError (response, file, fileList) { console.log('上傳失敗,請重試!') }, // 上傳前對文件的大小的判斷 beforeAvatarUpload (file) { const extension = file.name.split('.')[1] === 'xls' const extension2 = file.name.split('.')[1] === 'xlsx' const extension3 = file.name.split('.')[1] === 'doc' const extension4 = file.name.split('.')[1] === 'docx' const isLt2M = file.size / 1024 / 1024 < 10 if (!extension && !extension2 && !extension3 && !extension4) { console.log('上傳模板只能是 xls、xlsx、doc、docx 格式!') } if (!isLt2M) { console.log('上傳模板大小不能超過 10MB!') } return extension || extension2 || extension3 || extension4 && isLt2M } }
“vue如何使用Element el-upload組件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。