下载

最近更新时间:2022-08-24 15:51:11

我的收藏

简介

本文档提供关于文件下载的 API 概览以及 SDK 示例代码。

高级下载

功能说明

该下载方法内部会自动进行下载到本地或流以及续传的逻辑,生成的 downloadTask 可以供外部进行暂停、恢复、取消等。

示例代码

//下载到本地的文件
val file = File.createTempFile("dowloadBigMedia", ".jpg")
//获取下载任务
val downloadTask = smh.download(
//要下载的文件名称
name = "uploadBigMedia.jpg",
//所在文件夹,默认是根目录下
dir = Directory(),
//要下载到的本地文件路径
localFullPath = file.absolutePath,
//状态监听器
stateListener = object : SMHStateListener {
override fun onStateChange(request: SMHRequest, state: SMHTransferState) {
Log.i("testDownloadTask", "onStateChange $state")
}
},
//进度监听器
progressListener = object: SMHProgressListener {
override fun onProgressChange(request: SMHRequest, progress: Long, target: Long) {
Log.i("testDownloadTask", "Progress change $progress/$target")
}
},
//结果监听器
resultListener = object: SMHResultListener {
override fun onSuccess(request: SMHRequest, result: SMHResult) {
Log.i("testDownloadTask", "onSuccess")
//下载结果
if(result is DownloadFileResult){
Log.i("testDownloadTask", "bytesTotal: ${result.bytesTotal}")
Log.i("testDownloadTask", "content: ${result.content.toString()}")
Log.i("testDownloadTask", "crc64: ${result.crc64}")
Log.i("testDownloadTask", "key: ${result.key}")
Log.i("testDownloadTask", "meta: ${result.meta?.entries?.joinToString()}")
}
}
override fun onFailure(
request: SMHRequest,
smhException: SMHException?,
smhClientException: SMHClientException?
) {
Log.i("testDownloadTask", "onFailure $smhException, $smhClientException")
}
}
)
launch {
delay(5000)
//暂停下载任务
downloadTask.pause()
}
//开始下载任务
downloadTask.start()
delay(2000)
//恢复下载任务
downloadTask.resume()