简体   繁体   中英

Capturing save and cancel event on window.open() in electron

I am saving a file locally in js like this

var win = window.open(appConfig.server_url + '/v1/discussion/files/download/chat' + '/' + params);

on browser this opens a new tab and downloads the files and closes the tab, but on electron this opens a file save dialog like shown below:

在此处输入图片说明

So I want to capture the save and cancel event in the js so that on clicking save user should get "download successful" message and on cancel nothing should happen.

You can register listener to session to catch 'will-download' event. In the callback you have access to the current DownloadItem and can do whatever you want with it.

Electron docs example :

// In the main process.
const {BrowserWindow} = require('electron')
let win = new BrowserWindow()
win.webContents.session.on('will-download', (event, item, webContents) => {
  // Set the save path, making Electron not to prompt a save dialog.
  item.setSavePath('/tmp/save.pdf')

  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}`)
    }
  })
})

I hope this helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM