前端實現文件的上傳,就必須用到
input
標簽,
type
屬性為
file
。
在
vue
項目中通
ref
操作dom。
input
有一個屬性
accept
,是必須要搭配
type=file
使用。
multiple
可以上傳多張,
accept
限制上傳文件的類型,屬性值有
- audio(音頻)
- video(視頻)
- image(圖片)
- MIME_type(一個有效的 MIME 類型,不帶參數。請參閱 IANA MIME 類型,獲得標准 MIME 類型的完整列表。
image/*
表示接受所有類型的圖片,音頻,視頻相同。)
1 <input type="file" accept="image/*" ref="file" @change="upload" multiple/>
監聽input
的onchange
事件,在change
事件里操作DOM,拿到上傳的文件信息。上傳的文件信息都會保存在files
以數組元素的形式保存。
1 this.$refs.file.files[0]
通過new fileReader
對象將圖片轉換為base64的數據,FileReader 對象允許Web應用程序異步讀取存儲在用戶計算機上的文件的內容,
1 let data = this.$refs.file.files[0]; 2 let imgFile = new FileReader(); 3 imgFile.readAsDataURL(data); 4 imgFile.onload = res => { 5 console.log(res); 6 this.src=res.target.result 7 };
readAsDataURL
,讀取指定的文件內容,一旦完成,就可以在
onload
事件拿到base64數據。
onload
事件有一個參數,這個參數包含了讀取完成之后的文件信息,其中,
res.target.result
就是轉換之后的base64圖片數據。將base64數據賦值給src即可預覽圖片。
