最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3前端獲取文件的絕對路徑問題解決

 更新時間:2023年09月08日 09:20:37   作者:敲代碼的柯基  
這篇文章主要給大家介紹了關于vue3前端獲取文件的絕對路徑問題解決的相關資料,文中通過代碼示例介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下

公司的項目是基于vue3的,由于需求需要前端獲取用戶選的文件的絕對路徑。但是瀏覽器處于安全策略無法獲取真實的文件路徑,只能拿到相對路徑或者是D:\fakepath\xxxx.

看了網(wǎng)上很多方法都很坑,明明沒拿到路徑非說拿到了,浪費了很多時間,這里要說單純依靠vue是解決不了的??!

最后選擇了引入electron來獲取文件的絕對路徑。項目已經(jīng)使用electron進行了打包,所以是可以通過electron方式運行的,現(xiàn)在需要的就是vue的代碼中引入electron,進行打開文件管理器,實現(xiàn)文件路徑獲取。

首先要安裝相關的包:

npm install --save-dev electron
npm install --save-dev electron-builder

所有的界面代碼都是在vue項目中完成的所以vue中不再需要preload.js background.js這些文件

electron的通信是通過ipcRenderer實現(xiàn)的

在需要通信的文件中進行調(diào)用

const { ipcRenderer } = require('electron')

這時候會報錯,錯誤顯示是node_modules/electron/index.js文件中引入fs.existsSync語句造成的

百度查資料得知原因是:

(1)、首先在渲染進程屬于瀏覽器端,沒有集成Node的環(huán)境,所以類似 fs 這樣的Node的基礎包是不可以使用。

(2)、因為沒有Node環(huán)境,所以這種屬于node api的require關鍵詞是不可以使用的。

(3)、electron5.x的node集成環(huán)境默認是關閉的,這之前的版本是默認開啟的

方案是在主進程中集成 Nodejs,也就是添加配置nodeIntegration: true

vue.config.js配置:

 pluginOptions: {
        electronBuilder: {
            nodeIntegration: true,
            contextIsolation: false,
        }
    }

然后通過使用window.require代替require來引入electron,因為前者不會被webpack編譯,在渲染進程require關鍵字就是表示node模塊的系統(tǒng)渲染進程:

const { ipcRenderer } = window.require('electron')

這時候又出現(xiàn) window.require is not a function .錯誤,這是因為工程是在本地瀏覽器運行的,識別不了electron中的api,只要保證在electron應用程序下運行就不會報錯

解決:npm install --save is-electron

 function importStudy() {
            if (isElectron()) {
                window.ipcRenderer = window.require('electron').ipcRenderer
                ipcRenderer.send('upload', "import study")
                ipcRenderer.on('get-file-path', (event: any, arg: any) => {
                    console.log(arg)
                    })
                })
            }          
        }

vue文件:

 <button @click="importStudy">import</button>

點擊頁面的按鈕就會向upload發(fā)送消息去進行打開文件管理的操作

在electron的包中main.js進行接收

ipcMain.on('upload',(event,message)=>{
   console.log(message)
   dialog.showOpenDialog({
    title:'選擇要上傳的文件',//對話框的標題
    buttonLabel: '確認', //確定按鈕的自定義標簽
    properties: [ 'openDirectory', 'multiSelections'], //打開文件的屬性,打開文件還是文件夾,隱藏文件,多選文件
   }).then(res=>{
    if(!res.canceled){
      console.log(res.filePaths)
      event.reply('get-file-path',res.filePaths)//拿到路徑后返回
    }
   }).catch(err=>{
    console.log(err)
   });
})

此時importStudy可以拿到絕對路徑了,但是前端瀏覽器沒辦法調(diào)試,后端是可以獲取到的。

總結

到此這篇關于vue3前端獲取文件的絕對路徑問題解決的文章就介紹到這了,更多相關vue3獲取文件絕對路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue router安裝及使用方法解析

    Vue router安裝及使用方法解析

    這篇文章主要介紹了Vue router安裝及使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • vue如何實現(xiàn)接口統(tǒng)一管理

    vue如何實現(xiàn)接口統(tǒng)一管理

    這篇文章主要介紹了vue如何實現(xiàn)接口統(tǒng)一管理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue中的雙向數(shù)據(jù)綁定原理與常見操作技巧詳解

    vue中的雙向數(shù)據(jù)綁定原理與常見操作技巧詳解

    這篇文章主要介紹了vue中的雙向數(shù)據(jù)綁定原理與常見操作技巧,結合實例形式詳細分析了vue中雙向數(shù)據(jù)綁定的概念、原理、常見操作技巧與相關注意事項,需要的朋友可以參考下
    2020-03-03
  • Vue插件之滑動驗證碼

    Vue插件之滑動驗證碼

    這篇文章主要為大家詳細紹介紹了Vue插件之滑動驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • vue中使用百度腦圖kityminder-core二次開發(fā)的實現(xiàn)

    vue中使用百度腦圖kityminder-core二次開發(fā)的實現(xiàn)

    這篇文章主要介紹了vue中使用百度腦圖kityminder-core二次開發(fā)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 利用Vue模擬實現(xiàn)element-ui的分頁器效果

    利用Vue模擬實現(xiàn)element-ui的分頁器效果

    這篇文章主要為大家詳細介紹了如何利用Vue模擬實現(xiàn)element-ui的分頁器效果,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下
    2022-11-11
  • vue3?setup語法糖之組件傳參(defineProps、defineEmits、defineExpose)示例詳解

    vue3?setup語法糖之組件傳參(defineProps、defineEmits、defineExpose)示例詳

    defineProps?和?defineEmits?都是只能在?<script?setup>?中使用的編譯器宏,他們不需要導入,且會隨著?<script?setup>?的處理過程一同被編譯掉,這篇文章主要介紹了vue3?setup語法糖之組件傳參(defineProps、defineEmits、defineExpose)示例詳解,需要的朋友可以參考下
    2023-01-01
  • vue項目下,如何用命令直接修復ESLint報錯

    vue項目下,如何用命令直接修復ESLint報錯

    這篇文章主要介紹了vue項目下,如何用命令直接修復ESLint報錯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 關于iview和elementUI組件樣式覆蓋無效問題及解決

    關于iview和elementUI組件樣式覆蓋無效問題及解決

    這篇文章主要介紹了關于iview和elementUI組件樣式覆蓋無效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue3實現(xiàn)掛載全局方法和用getCurrentInstance代替this

    Vue3實現(xiàn)掛載全局方法和用getCurrentInstance代替this

    這篇文章主要介紹了Vue3實現(xiàn)掛載全局方法和用getCurrentInstance代替this,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論

电白县| 增城市| 张掖市| 教育| 仪陇县| 连江县| 东明县| 光泽县| 阜康市| 潼关县| 开阳县| 灵山县| 客服| 卢湾区| 吴江市| 依安县| 沂源县| 石阡县| 鄯善县| 鹤岗市| 莒南县| 锡林郭勒盟| 于都县| 疏勒县| 佛学| 宽甸| 安多县| 静宁县| 绥芬河市| 福建省| 蚌埠市| 阿巴嘎旗| 桃园县| 浏阳市| 遵化市| 河源市| 焦作市| 大方县| 苏尼特左旗| 德安县| 库伦旗|