CDN加速

Android 上传SDK

更新时间:2021-04-27 15:20:11

Android上传SDK

简介

云点播服务支持采用网宿云存储 Android版 上传SDK,用于嵌入到Android APP中,实现从移动手机端上传视频至云点播中。

SDK下载

下载地址

快速集成

1)上传Token获取

详细见上传Token获取

2)初始化

初始化主要完成上传域名设置、分片上传并发数、响应超时时间、连接超时时间、重试次数。

1. 通过配置文件统一设置上传,管理域名
com.chinanetcenter.wcs.android.Config.java

public static final String PUT_URL = "upload.cloudv.haplat.net";

2. 在工程中设定参数
FileUploader.setUploadUrl("upload.cloudv.haplat.net");    
    ClientConfig config = new ClientConfig();
    
    // 设置分片上传并发数为10,不配置时默认值为5
    config.setMaxConcurrentRequest(10);
    FileUploader.setClientConfig(config);

3. 设置表单参数(文件名、mimeTupe等)
import com.chinanetcenter.wcs.android.api.ParamsConf;

conf = new ParamsConf();

// 原始文件名称
conf.fileName = '<原始文件>';

// 通过表单参数设置文件保存到云存储的名称
conf.keyName = <fileKey>;

// 通过表单参数设置文件的mimeType
conf.mimeType = '<mimeType>';
FileUploader.setParams(conf);

4. 自定义块、片的大小

块的大小,默认为4M,必须是4M的倍数,最大不能超过100M。 片的大小,默认为256KB,必须是64K的倍数,最大不能超过块的大小。

 FileUploader.setBlockConfigs(8, 512); //设置块大小为8M,片大小为512KB

3)文件上传

普通上传
/**
     * 上传接口范例
     */
private void uploadFile(File srcFile) {
	/**
         * token -上传凭证
         * srcFile -本地待上传的文件
         * mFileUploaderListener -上传的回调,不需要则传空
         */
	FileUploader.upload(context, token, srcFile, null, mFileUploaderListener); 
    }

分片上传

移动端上传大文件需要耗费较长时间,一旦在传输过程中出现异常,文件内容需全部重传,影响用户体验,为避免这个问题,引进分片上传机制。
分片上传机制是将一个大文件切分成多个自定义大小的块,然后将这些块并行上传,如果某个块上传失败,客户端只需要重新上传这个块即可。
注意:每个块的最大大小不能超过100M;最小不能小于4M,否则将会采用默认4M去切分。

private static final long DEFAULT_BLOCK_SIZE = 1 * 1024 * 1024;
	/**
         * tag -用于标记分片上传,可取任意值(比如说文件名),只对取消产生影响,不想使用可置为null
	* token -上传凭证
         * srcFile -本地待上传的文件
         * mFileUploaderListener -分片上传回调,不需要则传空
         */
FileUploader.sliceUpload(null, context, token, srcFile, DEFAULT_BLOCK_SIZE, mSliceUploaderListener);

4)回调函数

1. 普通上传回调
new FileUploaderStringListener () {

            @Override
            public void onSuccess (int status, String responseString) {
		//上传成功
                Log.d(TAG, " responseString: " + responseString);
            }

            @Override
            public void onFailure(OperationMessage operationMessage) {
		//上传失败
                Log.e(TAG, "onFailure: " + operationMessage.getMessage());
            }

            @Override
            public void onProgress (UploadFileRequest request, long currentSize, long totalSize) {
		//上传过程中进度回调
                Log.d(TAG, String.format("Progress %d from %d", currentSize, totalSize));
            }
        }

2. 分片上传回调
new SliceUploaderListener() {
          @Override
          public void onSliceUploadSucceed(JSONObject jsonObject) {
		//上传成功
		Log.d("CNCLog", "slice upload succeeded.");
	}

	@Override
	public void onSliceUploadFailured(HashSet<String> errorMessages) {
		//上传失败
		Log.d("CNCLog", "slice upload failured.");
	}

	@Override
	public void onProgress(long uploaded, long total) {
		//上传过程中进度回调
		Log.d("CNCLog", String.format(Locale.CHINA, "uploaded : %s, total : %s", uploaded, total));
	}
}