电子下载 | DownloadItem
类:DownloadItem
从远程源下载控制文件。
程序:主
DownloadItem
是EventEmitter
表示电子下载项的。它用于will-download
事件Session
类,并允许用户控制下载项。
// 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}`)
}
})
})
实例事件
事件:“更新”
返回:
event
事件
state
串
在下载已更新且未完成时发出。
大state
可以是下列之一:
progressing
-下载正在进行中。
interrupted
-下载中断,可以恢复。
活动:“完成”
返回:
event
事件
state
弦
当下载处于终端状态时发射。这包括完成的下载,取消的下载(通过downloadItem.cancel()
)以及无法恢复的中断下载。
大state
可以是下列之一:
completed
-下载工作顺利完成。
cancelled
-下载已被取消。
interrupted
-下载中断,无法恢复。
实例方法
downloadItem
对象具有以下方法:
downloadItem.setSavePath(path)
path
String-设置下载项的保存文件路径。
API仅在会话的will-download
回调函数中可用。如果用户没有通过API设置保存路径,Electron将使用原始程序确定保存路径(通常会提示保存对话框)。
downloadItem.getSavePath()
返回String
- 下载项目的保存路径。这将是通过设置的路径downloadItem.setSavePath(path)
或从显示的保存对话框中选择的路径。
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.getTotalBytes()
返回Integer
- 下载项目的总大小(以字节为单位)。
如果大小未知,则返回0。
downloadItem.getReceivedBytes()
返回Integer
- 下载项目的接收字节数。
downloadItem.getContentDisposition()
返回String
- 响应头中的Content-Disposition字段。
downloadItem.getState()
返回String
- 当前状态。可以progressing
,completed
,cancelled
或interrupted
。
注意:
以下方法特别适用于cancelled
会话重新启动时恢复项目。
downloadItem.getURLChain()
返回String[]
- 包含任何重定向的项目的完整url链。
downloadItem.getLastModifiedTime()
返回String
- Last-Modified标题值。
downloadItem.getETag()
返回String
- ETag标题值。
downloadItem.getStartTime()
返回Double
- 自下载开始时的UNIX纪元以来的秒数。