亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue中input標(biāo)簽上傳本地文件或圖片后獲取完整路徑的解決方法

 更新時(shí)間:2023年04月24日 11:32:58   作者:H-rosy  
本文給大家介紹vue中input標(biāo)簽上傳本地文件或圖片后獲取完整路徑,如E:\medicineOfCH\stageImage\xxx.jpg,本文給大家分享完美解決方案,感興趣的朋友跟隨小編一起看看吧

前言:

好久沒(méi)有寫(xiě)vue了。今天遇到一個(gè)需求:使用input框來(lái)上傳圖片類型,并且在選擇之后立刻回顯出來(lái)。使用< input type=“file”/>在選定圖片后再< img src=“xxx”/>。今天在實(shí)現(xiàn)這個(gè)需求的時(shí)候主要是出現(xiàn)了三個(gè)問(wèn)題:

  • 如何獲取文件完整路徑
  • 如何選擇文件后立刻回顯圖片
  • 什么時(shí)候獲取完整路徑和回顯圖片

先來(lái)解決第一個(gè)問(wèn)題吧。如何獲取完整路徑,我也在csdn上面看了挺多博客才解決的,但是我發(fā)現(xiàn)大多數(shù)都是不太清楚的,就是有些講了但是沒(méi)有解釋,導(dǎo)致我看不懂,有些是無(wú)法實(shí)現(xiàn)功能。
首先我的input標(biāo)簽代碼是這樣的。id是用來(lái)標(biāo)識(shí)的,為了更好的獲取dom,name是為了實(shí)現(xiàn)圖片上傳時(shí)的參數(shù)名。

 <input type="file" id="fileImage" name="fileImage" @change="showImg">

圖片渲染代碼

<img id="img1" src="" alt="" width="120px" height="100px">

由于瀏覽器的加密功能,我們無(wú)法完整的獲取到圖片或者文件的完整地址。只能得到C://fakepath//具體文件名 最初我的做法是通過(guò)獲取dom元素,然后直接獲取到input標(biāo)簽的value值,但是只能獲取到最后的名字,比如說(shuō)你的完整路徑是E:\medicineOfCH\stageImage\123.jpg 那么ipt.value只能得到123.jpg這個(gè)值。

解決辦法:

showImg(){
  /*     let ipt=document.getElementById('fileImage');
      console.log(ipt.value)
      this.imageUrl=ipt.value
 */
     
      var file = document.getElementById('fileImage').files[0];
      console.log(file)
   if (window.FileReader) {    
            var reader = new FileReader();    
            reader.readAsDataURL(file);    
            //監(jiān)聽(tīng)文件讀取結(jié)束后事件    
          reader.onloadend = function (e) {
           //e.target.result就是最后的路徑地址
            document.getElementById("img1").setAttribute("src",e.target.result)
            console.log("***"+e.target.result);
             
            };    
       }
    }

代碼解釋:

查找資料發(fā)現(xiàn)可以通過(guò)獲取到dom元素,再使用自帶的一個(gè)files數(shù)組得到第一個(gè)元素就是當(dāng)前你選擇的文件或者圖片。之后唯一需要注意的點(diǎn)就是這一句代碼document.getElementById(“img1”).setAttribute(“src”,e.target.result) img1是img標(biāo)簽的id,setAttribute是為當(dāng)前dom元素設(shè)置屬性值,這句代碼就是設(shè)置img中原有的src屬性,可以看見(jiàn)最初的src屬性值我是設(shè)置為空字符串的,然后在這里設(shè)置成了剛剛選擇的文件地址。e.target.result就是最后的路徑地址。所以我的前面兩個(gè)問(wèn)題都解決了,只要獲得了完整路徑就可以立馬回顯圖片了。
那么最重要的 來(lái)了。什么時(shí)候開(kāi)始獲取呢?在這里我參考了以為博主的博客。文后貼出地址。
我們書(shū)寫(xiě)了mousedown,mouseup,click,input,change,focus,blur綁定到了input上面,模擬點(diǎn)擊選擇了一個(gè)文件,觸發(fā)事件的流程是下面這樣的:
(1)mousedown
(2)focus
(3)mouseup
(4)click
(5)blur
(6)focus
(7)change
首先觸發(fā)了鼠標(biāo)按下事件,然后就是焦點(diǎn)到了input上面,然后鼠標(biāo)抬起,觸發(fā)click點(diǎn)擊事件,失去焦點(diǎn)以后彈出了文件選擇框,選中文件以后觸發(fā)焦點(diǎn),最后觸發(fā)的change事件。如果你沒(méi)有選擇文件的話,直接點(diǎn)擊取消的話,就不會(huì)觸發(fā)change事件。所以說(shuō),如果要監(jiān)聽(tīng)input 的type=file的內(nèi)容變更事件的話,最好直接用change事件去監(jiān)聽(tīng)。所以你可以發(fā)現(xiàn)我的input框設(shè)置了@change事件,通過(guò)改事件我們開(kāi)始獲取地址和回顯地址。
console.log(document.getElementById(‘fileImage’).files)打印出來(lái)的files,發(fā)現(xiàn)只有一個(gè)文件,長(zhǎng)度為一,因?yàn)槲覀冞@里不是多選,二是單選。

console.log(file)打印出來(lái)的完整路徑:

可以看見(jiàn)就算獲取到了瀏覽器還是加密了,但是并不影響我們?nèi)ヤ秩具@張圖片或者得到這個(gè)路徑,因?yàn)樗鼉H僅是在瀏覽器展示路徑時(shí)加密了,并不影響使用。如果有講了不正確的地方歡迎大家批評(píng)斧正

到此這篇關(guān)于vue中input標(biāo)簽上傳本地文件或圖片后獲取完整路徑的文章就介紹到這了,更多相關(guān)vue獲取完整路徑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實(shí)現(xiàn)未登錄訪問(wèn)其他頁(yè)面自動(dòng)跳轉(zhuǎn)登錄頁(yè)功能(實(shí)現(xiàn)步驟)

    vue實(shí)現(xiàn)未登錄訪問(wèn)其他頁(yè)面自動(dòng)跳轉(zhuǎn)登錄頁(yè)功能(實(shí)現(xiàn)步驟)

    這篇文章主要介紹了vue實(shí)現(xiàn)未登錄下訪問(wèn)其他頁(yè)面自動(dòng)跳轉(zhuǎn)登錄頁(yè),本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • vue實(shí)現(xiàn)登錄驗(yàn)證碼

    vue實(shí)現(xiàn)登錄驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)登錄驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue-router 源碼之實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 vue-router

    vue-router 源碼之實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 vue-router

    這篇文章主要介紹了vue-router 源碼之實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 vue-router,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Vue+LogicFlow+Flowable實(shí)現(xiàn)工作流

    Vue+LogicFlow+Flowable實(shí)現(xiàn)工作流

    本文主要介紹了Vue+LogicFlow+Flowable實(shí)現(xiàn)工作流,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • 詳解mpvue開(kāi)發(fā)微信小程序基礎(chǔ)知識(shí)

    詳解mpvue開(kāi)發(fā)微信小程序基礎(chǔ)知識(shí)

    這篇文章主要介紹了詳解mpvue開(kāi)發(fā)微信小程序基礎(chǔ)知識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 用Vue編寫(xiě)抽象組件的方法

    用Vue編寫(xiě)抽象組件的方法

    這篇文章主要介紹了用Vue編寫(xiě)抽象組件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Vue使用axios進(jìn)行g(shù)et請(qǐng)求拼接參數(shù)的2種方式詳解

    Vue使用axios進(jìn)行g(shù)et請(qǐng)求拼接參數(shù)的2種方式詳解

    axios中post請(qǐng)求都是要求攜帶參數(shù)進(jìn)行請(qǐng)求,這篇文章主要給大家介紹了關(guān)于Vue使用axios進(jìn)行g(shù)et請(qǐng)求拼接參數(shù)的2種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • vxe-list?vue?如何實(shí)現(xiàn)下拉框的虛擬列表

    vxe-list?vue?如何實(shí)現(xiàn)下拉框的虛擬列表

    這篇文章主要介紹了vxe-list?vue?如何實(shí)現(xiàn)下拉框的虛擬列表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue2?與?Vue3?的數(shù)據(jù)綁定原理及實(shí)現(xiàn)

    Vue2?與?Vue3?的數(shù)據(jù)綁定原理及實(shí)現(xiàn)

    這篇文章主要介紹了Vue2與Vue3的數(shù)據(jù)綁定原理及實(shí)現(xiàn),數(shù)據(jù)綁定是一種把用戶界面元素的屬性綁定到特定對(duì)象上面并使其同步的機(jī)制,使開(kāi)發(fā)人員免于編寫(xiě)同步視圖模型和視圖的邏輯
    2022-09-09
  • vue使用$store.commit() undefined報(bào)錯(cuò)的解決

    vue使用$store.commit() undefined報(bào)錯(cuò)的解決

    這篇文章主要介紹了vue使用$store.commit() undefined報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論