downloads 下载
启动、监视、操作和搜索下载,此权限会触发警告
权限设置
{
"permissions": [
"downloads"
],
}
方法
setShelfEnabled() 设置下载栏是否可见
设置下载栏是否可见。底部灰色下载栏。新版本使用
setUiOptions
chrome.downloads.setShelfEnabled(enabled: boolean, callback?: function);
download() 下载链接
下载文件
// 下载项信息
type downloadItemInfo = {
// 曾下载文件的URL
url: string;
// 曾下载文件的文件名
filename: string;
// 曾下载文件的保存路径
saveAs: boolean;
// 曾下载文件的请求头
headers: object[];
// 曾下载文件的请求体
body: object;
// 曾下载文件的请求方法
method: 'GET' | 'POST';
// 曾下载文件的请求类型
type: 'image' | 'video' | 'audio' | 'text' | 'application' | 'multipart' | 'other';
// 曾下载文件的大小
totalBytes: number;
// 曾下载文件的状态
state: 'in_progress' | 'interrupted' | 'complete';
// 曾下载文件的状态信息
paused: boolean;
// 曾下载文件的错误信息
error: string;
// 曾下载文件的创建时间
startTime: number;
// 曾下载文件的结束时间
endTime: number;
// 曾下载文件的持续时间
elapsedTime: number;
// 曾下载文件的最后修改时间
lastModified: number;
// 曾下载文件的最后访问时间
lastAccessed: number;
// 曾下载文件的MIME类型
mime: string;
// 曾下载文件的SHA1哈希值
sha1: string;
// 曾下载文件的SHA256哈希值
sha256: string;
// 曾下载文件的MD5哈希值
md5: string;
// 曾下载文件的CRC32C哈希值
crc32c: string;
// 曾下载文件的安全状态
danger: 'safe' | 'accepted' | 'accepted_with_warning' | 'unknown';
// 曾下载文件的是否可恢复
canResume: boolean;
// 曾下载文件的是否已删除
exists: boolean;
// 曾下载文件的是否已打开
opened: boolean;
// 曾下载文件的是否已保存
state: 'in_progress' | 'interrupted' | 'complete';
}
chrome.downloads.download(downloadItemInfo: downloadItemInfo, callback?: function);
// background.js
chrome.downloads.download({
url: 'https://www.baidu.com',
filename: 'baidu.html',
saveAs: false,
headers: [],
body: {},
method: 'GET',
type: 'text',
totalBytes: 0,
state: 'in_progress',
paused: false,
error: '',
startTime: 0,
endTime: 0,
elapsedTime: 0,
lastModified: 0,
lastAccessed: 0,
mime: '',
sha1: '',
sha256: '',
md5: '',
crc32c: '',
danger: 'safe',
canResume: false,
exists: false,
opened: false,
}, (downloadItem) => {
console.log('🍄 background: >>>>>>>>>>>>>>>>>> 下载文件', Date.now(), downloadItem);
});
search() 搜索
搜索浏览器曾经下载过的所有文件
type DownloadQuery = {
id: number;
// 曾下载文件的URL
url: string;
urlRegex: string;
finalUrl: string;
finalUrlRegex: string;
// 曾下载文件的文件名
filename: string;
filenameRegex: string;
// 搜索结果的最大数量
limit: number;
// 搜索结果排序:orderBy = [‘ startTime’]按照开始时间升序,若要指定降序顺序,请在前缀中加上连字符: “-startTime”。
orderBy: string[];
// url链接参数
query: string[];
// 曾下载文件的状态
state: 'in_progress' | 'interrupted' | 'complete';
// 曾下载文件的MIME类型
mime: string;
// 曾下载文件的是否已删除
exists: boolean;
// 曾下载文件的状态信息
paused: boolean;
// 曾下载文件的错误信息
error: string;
// 曾下载文件的创建时间
startTime: number;
startedAfter: number;
startedBefore: number;
// 曾下载文件的结束时间
endTime: number;
endedAfter: number;
endedBefore: number;
// 曾下载文件的持续时间
elapsedTime: number;
// 曾下载文件的最后修改时间
lastModified: number;
// 曾下载文件的最后访问时间
lastAccessed: number;
// 曾下载文件的安全状态
danger: 'safe' | 'accepted' | 'accepted_with_warning' | 'unknown';
// 曾下载文件的大小
fileSize: number;
totalBytes: number;
totalBytesGreater: number;
totalBytesLess: number;
}
// 下载查询条件
// query: {} 查询所有
chrome.downloads.search(
query: DownloadQuery,
callback?: (res) => void,
)
// background.js
chrome.downloads.search({
limit: 100,
orderBy: ['-startTime'],
}, (downloadItems) => {
console.log('🍄 background: >>>>>>>>>>>>>>>>>> 搜索下载文件', Date.now(), downloadItems);
});
open() 打开文件
打开已下载的文件
chrome.downloads.open(
downloadId: number,
callback?: function,
)
pause() 暂停下载
暂停下载
chrome.downloads.pause(
downloadId: number,
callback?: function,
)
resume() 恢复下载
恢复下载
chrome.downloads.resume(
downloadId: number,
callback?: function,
)
cancel() 取消下载
取消下载
chrome.downloads.cancel(
downloadId: number,
callback?: function,
)
erase() 删除下载
删除下载
chrome.downloads.erase(
query: DownloadQuery,
callback?: function,
)
removeFile() 删除文件
删除文件
chrome.downloads.removeFile(
downloadId: number,
callback?: function,
)
acceptDanger() 接受危险
接受危险
chrome.downloads.acceptDanger(
downloadId: number,
callback?: function,
)
show() 显示下载
显示下载
chrome.downloads.show(
downloadId: number,
callback?: function,
)
getFileIcon() 获取文件图标
获取文件图标
chrome.downloads.getFileIcon(
downloadId: number,
options: {
size: number,
},
callback?: function,
)
showDefaultFolder() 显示默认文件夹
显示默认文件夹
chrome.downloads.showDefaultFolder()
事件
onCreated 创建事件
下载项被下载时触发
// background.js
chrome.downloads.onCreated.addListener((item) => {
console.log('🍄 background: >>>>>>>>>>>>>>>>>> 监听创建事件', Date.now(), item);
});
onErased 删除事件
当下载项被删除时触发
// background.js
chrome.downloads.onErased.addListener((item) => {
console.log('🍄 background: >>>>>>>>>>>>>>>>>> 监听删除事件', Date.now(), item);
});
onChanged 更新事件
当下载项的状态发生变化时触发,例如下载完成、下载失败、下载暂停、下载恢复、下载取消等
// background.js
chrome.downloads.onChanged.addListener((item) => {
// {
// "error": {
// "current": "USER_CANCELED"
// },
// "id": 254,
// "state": {
// "current": "interrupted",
// "previous": "in_progress"
// }
// }
console.log('🍄 background: >>>>>>>>>>>>>>>>>> 监听更新事件', Date.now(), item);
});
onDeterminingFilename 取文件名事件
当下载项的文件名需要确定时触发
// background.js
chrome.downloads.onDeterminingFilename.addListener((item, suggest) => {
// 默认覆盖原文件名
suggest({
filename: item.filename,
conflict_action: 'overwrite',
conflictAction: 'overwrite'
})
console.log('🍄 background: >>>>>>>>>>>>>>>>>> 监听取文件名事件', Date.now(), item, suggest);
});