类:DownloadItem
Class: DownloadItem
控制来自远程源的文件下载。
进程:主进程
此类未从 'electron' 模块导出。它仅作为 Electron API 中其他方法的返回值可用。
DownloadItem 是 Electron 中一个代表下载项的EventEmitter。它在 Session 类的 will-download 事件中使用,并允许用户控制下载项。
// In the main process.
const { BrowserWindow } = require('electron')
const 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}`)
    }
  })
})
实例事件
Event: 'updated'
返回
- eventEvent
- statestring - 可以是- progressing或- interrupted。
当下载已更新但未完成时发出。
state 可以是以下值之一
- progressing- 下载正在进行中。
- interrupted- 下载已中断,但可以恢复。
Event: 'done'
返回
- eventEvent
- statestring - 可以是- completed,- cancelled或- interrupted。
当下载处于终端状态时发出。这包括下载完成、下载取消(通过 downloadItem.cancel())以及无法恢复的中断下载。
state 可以是以下值之一
- completed- 下载成功完成。
- cancelled- 下载已被取消。
- interrupted- 下载已中断,但无法恢复。
实例方法
downloadItem 对象具有以下方法
downloadItem.setSavePath(path)
- pathstring - 设置下载项的保存文件路径。
此 API 仅在 session 的 will-download 回调函数中可用。如果 path 不存在,Electron 将尝试递归创建目录。如果用户没有通过 API 设置保存路径,Electron 将使用原始例程来确定保存路径;这通常会弹出保存对话框。
downloadItem.getSavePath()
返回 string - 下载项的保存路径。这将是已通过 downloadItem.setSavePath(path) 设置的路径,或从显示的保存对话框中选择的路径。
downloadItem.setSaveDialogOptions(options)
此 API 允许用户为默认打开的下载项的保存对话框设置自定义选项。此 API 仅在 session 的 will-download 回调函数中可用。
downloadItem.getSaveDialogOptions()
返回 SaveDialogOptions - 返回之前通过 downloadItem.setSaveDialogOptions(options) 设置的对象。
downloadItem.pause()
暂停下载。
downloadItem.isPaused()
返回 boolean - 下载是否已暂停。
downloadItem.resume()
恢复已暂停的下载。
要启用可恢复下载,您正在下载的服务器必须支持范围请求,并提供 Last-Modified 和 ETag 标头值。否则,resume() 将会丢弃先前接收到的字节并从头开始重新下载。
downloadItem.canResume()
返回 boolean - 下载是否可以恢复。
downloadItem.cancel()
取消下载操作。
downloadItem.getURL()
返回 string - 项目正在下载的源 URL。
downloadItem.getMimeType()
返回 string - 文件的 mime 类型。
downloadItem.hasUserGesture()
返回 boolean - 下载是否具有用户手势。
downloadItem.getFilename()
返回 string - 下载项的文件名。
文件名并不总是与本地磁盘中实际保存的文件名相同。如果用户在提示的下载保存对话框中更改文件名,则保存文件的实际名称将不同。
downloadItem.getCurrentBytesPerSecond()
返回 Integer - 当前下载速度(字节/秒)。
downloadItem.getTotalBytes()
返回 Integer - 下载项的总字节大小。
如果大小未知,则返回 0。
downloadItem.getReceivedBytes()
返回 Integer - 下载项已接收的字节数。
downloadItem.getPercentComplete()
返回 Integer - 下载完成百分比。
downloadItem.getContentDisposition()
返回 string - 响应头中的 Content-Disposition 字段。
downloadItem.getState()
返回 string - 当前状态。可以是 progressing, completed, cancelled 或 interrupted。
以下方法对于在 session 重启时恢复 cancelled 项特别有用。
downloadItem.getURLChain()
返回 string[] - 项目的完整 URL 链,包括任何重定向。
downloadItem.getLastModifiedTime()
返回 string - Last-Modified 标头的值。
downloadItem.getETag()
返回 string - ETag 标头的值。
downloadItem.getStartTime()
返回 Double - 下载开始时距离 UNIX 纪元的秒数。
downloadItem.getEndTime()
返回 Double - 下载结束时距离 UNIX 纪元的秒数。
实例属性
downloadItem.savePath
一个 string 属性,用于确定下载项的保存文件路径。
此属性仅在 session 的 will-download 回调函数中可用。如果用户没有通过此属性设置保存路径,Electron 将使用原始例程来确定保存路径;这通常会弹出保存对话框。