vuetify | vue | 文件上傳組件 | file | upload | form input[type="file"]


今天無聊地寫vuecli3聽歌的時候,遇到了上傳文件到Django的自我需求,然后就到vuetify的表單組件里找upload btn,發現居然沒有!!!

頓時驚了個呆,要知道之前用element做操作系統課設的時候,還是挺全的。

這里偷偷吐槽,vuetify的alert真的丑......

這里分享一個解決辦法,挺簡單的,網上好多辦法都模棱兩可,而且還有外國友人在npm發布了一個組件,名字我忘了,巨無敵難用。

So,Today I am writing to share a simple approach  to addresses this problem.

 

--------------------------------------------------------割--------------------------------------------------------

 

1.直接上代碼

 1 <template>
 2     <v-container>
 3         <v-layout>
 4             <v-flex>
 5                 <v-btn @click="upload" depressed>
 6                     Upload Image
7 </v-btn> 8 <input type="file" id="upload" ref="upload" @change="changeimg" accept=".jpg, .jpeg, .png"> 9 </v-flex> 10 </v-layout> 11 </v-container> 12 </template> 13 14 <script> 15 import myService from '@/services/myService' 16 17 export default { 18 components: { 19 }, 20 data () { 21 return { 24 } 25 }, 26 methods: { 27 upload () { 28 let uploadbtn = this.$refs.upload 29 uploadbtn.click() 30 }, 31 async changeimg (e) { 32 let formData=new FormData() 33 formData.append('file', e.target.files[0]) 34 await myServiece.fun(formData) 35 console.log('send') 36 } 37 } 38 } 39 </script> 40 41 <style scoped> 42 #upload{ 43 height: 0; 44 width: 0; 45 visibility: hidden; 46 } 47 </style>

加油,我相信你能看懂,嘻嘻

算了,我還是簡單說一下吧....就是創建兩個btn,第一個是好看的vuetify的,另一個是html原生的input(類型是file),然后把第二個用vue的ref記錄下來,以便后面調用,並且用css隱藏起來。

給第一個btn綁定upload方法,當點擊時,調用第二個btn的click事件,這樣就有一個錯覺,你懂吧,我懶得說了...自己看代碼把

最后上效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM