简介
本文档提供关于文件上传的 API 概览以及 SDK 示例代码。
功能说明
该上传方法内部会自动进行快速上传、简单上传、分块上传的逻辑,生成的 uploadTask 可以供外部进行暂停、恢复、取消等。
示例代码
SDK 支持 Uri 、输入流、第三方 URL。下面以 Uri 和 URL 为例:
//要上传的本地文件val file = File.createTempFile("uploadBigMedia", ".jpg")//获取上传任务// 如果要通过 uploadFromUrl 上传第三方 url 文件资源,请将下面这行替换为:// val uploadTask = smh.uploadFromUrl(val uploadTask = smh.upload(//上传到服务端的名称name = "uploadBigMedia.jpg",//所在文件夹,默认是根目录下dir = Directory(),//本地文件 Uriuri = Uri.fromFile(file),//第三方 url 文件资源// url = "https://xxxxxxx.com/file",//第三方 url 文件资源需要的 header// headers = mapOf("testkey" to "testvalue"),//状态监听器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()
说明:
通过调用 uploadFromUrl 方法进行第三方 URL 文件资源的上传。
第三方 URL 支持分片上传和简单上传。当 URL 支持 range 时会执行分片上传,其余情况执行简单上传(不支持断点续传功能)。
第三方 URL 在简单上传的情况下仅支持小于等于5GB的文件进行上传,当您上传大于5GB的文件时会抛出错误码:UrlFileError(提示上传的文件超过限制),您可尝试将文件下载到本地之后在重新调用上传接口进行上传。