跳到主要内容

类: DownloadItem

类: DownloadItem

控制来自远程源的文件下载。

进程: 主进程
此类不是从 'electron' 模块导出的。 它仅作为 Electron API 中其他方法的返回值提供。

DownloadItem 是一个 EventEmitter,它表示 Electron 中的下载项。 它在 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}`)
}
})
})

实例事件

事件: 'updated'

返回

  • event 事件
  • state 字符串 - 可以是 progressinginterrupted

当下载已更新且未完成时发出。

state 可以是以下之一

  • progressing - 下载正在进行中。
  • interrupted - 下载已中断,可以恢复。

事件: 'done'

返回

  • event 事件
  • state 字符串 - 可以是 completedcancelledinterrupted

当下载处于终端状态时发出。 这包括已完成的下载,取消的下载(通过 downloadItem.cancel())以及无法恢复的中断下载。

state 可以是以下之一

  • completed - 下载成功完成。
  • cancelled - 下载已取消。
  • interrupted - 下载已中断且无法恢复。

实例方法

downloadItem 对象具有以下方法

downloadItem.setSavePath(path)

  • path 字符串 - 设置下载项的保存文件路径。

该 API 仅在会话的 will-download 回调函数中可用。 如果 path 不存在,Electron 将尝试递归创建目录。 如果用户没有通过 API 设置保存路径,Electron 将使用原始例程来确定保存路径;这通常会提示保存对话框。

downloadItem.getSavePath()

返回 string - 下载项的保存路径。 这将是通过 downloadItem.setSavePath(path) 设置的路径,或者从显示的保存对话框中选择的路径。

downloadItem.setSaveDialogOptions(options)

  • options SaveDialogOptions - 设置保存文件对话框选项。 此对象具有与 dialog.showSaveDialog()options 参数相同的属性。

该 API 允许用户为默认情况下为下载项打开的保存对话框设置自定义选项。 该 API 仅在会话的 will-download 回调函数中可用。

downloadItem.getSaveDialogOptions()

返回 SaveDialogOptions - 返回先前由 downloadItem.setSaveDialogOptions(options) 设置的对象。

downloadItem.pause()

暂停下载。

downloadItem.isPaused()

返回 boolean - 下载是否已暂停。

downloadItem.resume()

恢复已暂停的下载。

注意:要启用可恢复的下载,您下载的服务器必须支持范围请求,并提供 Last-ModifiedETag 标头值。 否则,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 - 当前状态。可以是 progressingcompletedcancelledinterrupted

注意:以下方法对于在会话重新启动时专门恢复 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 属性,用于确定下载项的保存文件路径。

此属性仅在会话的 will-download 回调函数中可用。如果用户没有通过此属性设置保存路径,Electron 将使用原始例程来确定保存路径;这通常会提示保存对话框。