有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

简介

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

高级上传

功能说明

该上传方法内部会自动进行快速上传、简单上传、分块上传的逻辑,生成的 uploadTask 可以供外部进行暂停、恢复、取消等。

示例代码

SDK 支持 Uri 以及输入流。下面以 Uri 为例:
//要上传的本地文件
val file = File.createTempFile("uploadBigMedia", ".jpg")
//获取上传任务
val uploadTask = smh.upload(
//上传到服务端的名称
name = "uploadBigMedia.jpg",
//所在文件夹,默认是根目录下
dir = Directory(),
//本地文件 Uri
uri = Uri.fromFile(file),
//状态监听器
stateListener = object : SMHStateListener {
override fun onStateChange(request: SMHRequest, state: SMHTransferState) {
Log.i("Test", "onStateChange $state")
}
},
//进度监听器
progressListener = object: SMHProgressListener {
override fun onProgressChange(request: SMHRequest, progress: Long, target: Long) {
Log.i("Test", "Progress change $progress/$target")
}
},
//结果监听器
resultListener = object: SMHResultListener {
override fun onSuccess(request: SMHRequest, result: SMHResult) {
Log.i("Test", "onSuccess")
}
override fun onFailure(
request: SMHRequest,
smhException: SMHException?,
smhClientException: SMHClientException?
) {
Log.i("Test", "onFailure $smhException and ")
}
}
)
launch {
delay(5000)
//暂停上传任务
uploadTask.pause(true)
}
//开始上传任务
uploadTask.start()
delay(2000)
//恢复上传任务
uploadTask.resume()