electron 文件另存為

electron 文件另存為需要用到的知識點(diǎn)有:
1.ipcMain(從主進(jìn)程到渲染進(jìn)程的異步通信)信不。
2.dialog(顯示用于打開和保存文件肿孵、警報(bào)等的本機(jī)系統(tǒng)對話框)。
3.ipcRenderer(從渲染器進(jìn)程到主進(jìn)程的異步通信) 。
4.類:downloadItem(控制來自于遠(yuǎn)程資源的文件下載)霜幼。
下面我們開始文件另存為的操作:
1镊讼、首先創(chuàng)建一個文件(download.js)用于文件的打開沛膳、保存 等功能的封裝稍坯,方便維護(hù)及管理。(這里只做了文件另存為)代碼如下:

const { ipcMain, dialog, shell } = require('electron')
const path = require('path')
const fs = require('fs')
exports.initDownload = function (win) {
    let filePath = '';
    // 監(jiān)聽渲染進(jìn)程發(fā)出的download事件
    const webContents = win.webContents;
    ipcMain.on('download', (evt, args) => {
        const fileArr = args.split("/");
        let ext = path.extname(args)
        let filters = [{ name: '全部文件', extensions: ['*'] }]
        if (ext && ext !== '.') {
          filters.unshift({
            name: '',
            extensions: [ext.match(/[a-zA-Z]+$/)[0]]
          })
        }
        dialog.showSaveDialog(win, {
            filters,
            defaultPath:args
        }).then( res => {
            if(res.filePath){
                filePath = res.filePath
                webContents.downloadURL(args) // 注意這里必須是下載文件可訪問路徑蛹磺。而不是存儲路徑
            }
        })
    })
    webContents.session.on('will-download', (event, item, webContents) => {
        item.setSavePath(filePath) // 這里是存儲路徑或者存儲文件名稱
        item.on('updated', (event, state) => {
            if (state === 'interrupted') {
                console.log('Download is interrupted but can be resumed')
            } else if (state === 'progressing') {
                if (item.isPaused()) {
                    console.log('Download is paused')
                } else {
                    console.log(`Received bytes: ${item.getReceivedBytes()}`)
                }
            }
        })
        item.once('done', (event, state) => {
            if (state === 'completed') {
                console.log('Download successfully')
            } else {
                console.log(`Download failed: ${state}`)
            }
        })
    })
}

需要注意的是win.webContents.downloadURL(path)粟瞬。path是可訪問的文件路徑。
2、在主進(jìn)程中引入download中的 initDownload() 。并且在 let win = new BrowserWindow() 后調(diào)用該方法
3帝火、可以在寫一個插件 用于從渲染進(jìn)程發(fā)送消息到主進(jìn)程。名字隨意清酥。

import { ipcRenderer } from 'electron'

/**
 * 文件下載
 */
export function download(path) {
    ipcRenderer.send('download', path)
}

4、創(chuàng)建一個頁面蕴侣。在頁面引入download()方法焰轻,這里以vue為例。

<template>
  <div class="home">
        <button @click="down">文件下載</button>
  </div>
</template>

<script>
    import {download} from '@/plugins'
export default {
    name: 'HomeView',
    data() {
        return {
        }
    },
    methods:{
        down:function(){
               download("https://fanyiapp.cdn.bcebos.com/cms/image/88083c3025affd20e87d3a575f6bcb68.jpg")
        }
    }
}
</script>

文件另存為到這里就結(jié)束了昆雀,如果還有什么不懂的可以去查看electron開發(fā)文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辱志,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狞膘,更是在濱河造成了極大的恐慌揩懒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挽封,死亡現(xiàn)場離奇詭異已球,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辅愿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門智亮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人点待,你說我怎么就攤上這事阔蛉。” “怎么了癞埠?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵状原,是天一觀的道長聋呢。 經(jīng)常有香客問我,道長颠区,這世上最難降的妖魔是什么削锰? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮毕莱,結(jié)果婚禮上喂窟,老公的妹妹穿的比我還像新娘。我一直安慰自己央串,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布碗啄。 她就那樣靜靜地躺著质和,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稚字。 梳的紋絲不亂的頭發(fā)上饲宿,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音胆描,去河邊找鬼瘫想。 笑死,一個胖子當(dāng)著我的面吹牛昌讲,可吹牛的內(nèi)容都是我干的国夜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼短绸,長吁一口氣:“原來是場噩夢啊……” “哼车吹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起醋闭,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤窄驹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后证逻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乐埠,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年囚企,在試婚紗的時候發(fā)現(xiàn)自己被綠了丈咐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡龙宏,死狀恐怖扯罐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烦衣,我是刑警寧澤歹河,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布掩浙,位于F島的核電站,受9級特大地震影響秸歧,放射性物質(zhì)發(fā)生泄漏厨姚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一键菱、第九天 我趴在偏房一處隱蔽的房頂上張望谬墙。 院中可真熱鬧,春花似錦经备、人聲如沸拭抬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽造虎。三九已至,卻和暖如春纷闺,著一層夾襖步出監(jiān)牢的瞬間算凿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工犁功, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氓轰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓浸卦,卻偏偏與公主長得像署鸡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子限嫌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容