通过阅读本文,您可以了解文件上传的方式和基本流程。
操作步骤
请求上传地址和凭证或STS。
说明点播文件上传类
VODUploadClient
支持上传地址和凭证或STS方式上传,推荐使用上传地址和凭证方式进行上传。请求上传地址和凭证
上传图片和上传视频获取上传地址和凭证所请求的API不同,如下所示:
上传视频:客户端向AppServer发送请求,AppServer通过OpenAPI向阿里云点播服务发送CreateUploadVideo请求。请求成功将返回上传地址、上传凭证以及VideoId,AppServer将结果返回给客户端。
上传图片:客户端向AppServer发送请求,AppServer通过OpenAPI向阿里云点播服务发送CreateUploadImage请求。请求成功将返回上传地址、上传凭证以及ImageURL,AppServer将结果返回给客户端。
请求STS
通过STS方式,客户端向AppServer发送请求,AppServer向阿里云STS服务请求临时STS凭证。请求成功将返回STS凭证,AppServer将结果返回给客户端。
初始化上传实例。
声明
VODUploadClient
初始化回调。uploader = new VODUploadClientImpl(getApplicationContext());
初始化上传实例有两种方式,如下所示:
上传地址和凭证方式
上传地址和凭证方式调用
init
方法初始化。请求获取的上传地址和凭证初始化时无需设置,在上传开始后触发的
onUploadStarted
回调中调用setUploadAuthAndAddress(uploadFileInfo, uploadAuth, uploadAddress)
方法进行设置。当token超时,会触发
onUploadTokenExpired
回调,需要调用resumeWithAuth(uploadAuth)
方法,设置新的上传凭证继续上传。// create VODUploadClient final VODUploadClient uploader = new VODUploadClientImpl(getApplicationContext()); // setup callback VODUploadCallback callback = new VODUploadCallback() { public void onUploadSucceed(UploadFileInfo info) { OSSLog.logDebug("onsucceed ------------------" + info.getFilePath()); } public void onUploadFailed(UploadFileInfo info, String code, String message) { OSSLog.logError("onfailed ------------------ " + info.getFilePath() + " " + code + " " + message); } public void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) { OSSLog.logDebug("onProgress ------------------ " + info.getFilePath() + " " + uploadedSize + " " + totalSize); } } } public void onUploadTokenExpired() { OSSLog.logError("onExpired ------------- "); //重新刷新上传凭证:RefreshUploadVideo uploadAuth = "此处需要设置重新刷新凭证之后的值"; uploader.resumeWithAuth(uploadAuth); } public void onUploadRetry(String code, String message) { OSSLog.logError("onUploadRetry ------------- "); } public void onUploadRetryResume() { OSSLog.logError("onUploadRetryResume ------------- "); } public void onUploadStarted(UploadFileInfo uploadFileInfo) { OSSLog.logError("onUploadStarted ------------- "); uploader.setUploadAuthAndAddress(uploadFileInfo, uploadAuth, uploadAddress); } }; //上传初始化 uploader.init(callback);
STS方式
STS方式调用
init(accessKeyId, accessKeySecret, secretToken, expireTime, callback)
方法初始化,初始化参数是请求获取的临时STS凭证。当token过期时,触发
OnUploadTokenExpired
回调,需要调用resumeWithToken(accessKeyId, accessKeySecret, secretToken, expireTime)
方法,设置新的STS继续上传。// create VODUploadClient object uploader = new VODUploadClientImpl(getApplicationContext()); // setup callback // setup callback VODUploadCallback callback = new VODUploadCallback() { public void onUploadSucceed(UploadFileInfo info) { OSSLog.logDebug("onsucceed ------------------" + info.getFilePath()); } public void onUploadFailed(UploadFileInfo info, String code, String message) { OSSLog.logError("onfailed ------------------ " + info.getFilePath() + " " + code + " " + message); } public void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) { OSSLog.logDebug("onProgress ------------------ " + info.getFilePath() + " " + uploadedSize + " " + totalSize); } } } public void onUploadTokenExpired() { OSSLog.logError("onExpired ------------- "); //重新获取STS之后调用resumeWithToken uploader.resumeWithToken(accessKeyId, accessKeySecret, secretToken, expireTime); } public void onUploadRetry(String code, String message) { OSSLog.logError("onUploadRetry ------------- "); } public void onUploadRetryResume() { OSSLog.logError("onUploadRetryResume ------------- "); } public void onUploadStarted(UploadFileInfo uploadFileInfo) { OSSLog.logError("onUploadStarted ------------- "); } }; //初始化,临时账号过期时,在onUploadTokenExpired事件中,用resumeWithToken更新临时账号,上传默认支持断点续传 uploader.init(accessKeyId, accessKeySecret, secretToken, expireTime, callback);
回调设置。
设置
VODUploadCallback
对象,该对象是上传状态的回调类,需要设置下列回调方法:/** 上传完成回调 @param info 上传文件信息 */ void onUploadSucceed(UploadFileInfo info); /** 上传失败回调 @param info 上传文件信息 @param code 错误码 @param message 错误描述 */ void onUploadFailed(UploadFileInfo info, String code, String message); /** 上传进度回调 @param fileInfo 上传文件信息 @param uploadedSize 已上传大小 @param totalSize 总大小 */ void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize); /** token过期回调 上传地址和凭证方式上传需要调用resumeWithAuth方法继续上传 STS方式上传需要调用resumeWithToken方法继续上传 */ void onUploadTokenExpired(); /** 上传开始重试回调 */ void onUploadRetry(String code, String message); /** 上传结束重试,继续上传回调 */ void onUploadRetryResume (); /** 开始上传回调 上传地址和凭证方式上传需要调用setUploadAuthAndAddress:uploadAuth:uploadAddress:方法设置上传地址和凭证 @param fileInfo 上传文件信息 */ void onUploadStarted(UploadFileInfo uploadFileInfo);
添加文件到上传列表。
添加文件
添加视频
String filePath = "文件地址"; VodInfo vodInfo = new VodInfo(); vodInfo.setTitle("标题" + index); vodInfo.setDesc("描述." + index); vodInfo.cateId (19); vodInfo.tags("sports"); uploader.addFile(filePath,vodInfo);
添加图片
javaString filePath = “图片文件地址”; VodInfo vodInfo = new VodInfo(); vodInfo.setTitle(“标题” + index); vodInfo.setDesc(“描述.” + index); vodInfo.cateId (19); vodInfo.tags(“sports”); uploader.addFile(filePath,vodInfo);
说明支持的文件不大于4 GB。
VodInfo具体结构如下:
//标题 String title; //标签 List tags; //描述 String desc; //分类 idInteger cateId; //封面url(完整的URL https://) String coverUrl;
添加文件后,SDK会将待上传文件封装为
UploadFileInfo
对象,具体结构如下://文件本地路径 String filePath; //endpoint String endpoint; //bucket String bucket; //object String object; //VodInfo VodInfo vodInfo;
管理上传队列
VODUploadClient
支持添加多个文件顺序上传,并且提供了以下方法管理上传队列:说明尽管
VODUploadClient
支持多文件上传,如果使用上传凭证和地址方式上传,每个文件还是需要单独设置。基于多文件上传代码复杂度的考虑,建议只添加单文件上传。从队列中删除上传文件,如果待删除的文件正在上传中,则取消上传并自动上传下一个文件。
void deleteFile(int index)
清空上传队列,如果有文件在上传,则取消上传。
void clearFiles()
获取上传文件队列。
List<UploadFileInfo> listFiles()
将文件标记为取消,文件仍保留在上传列表中。如果待取消的文件正在上传中,则取消上传并自动上传下一个文件。
cancelFile(int index)
恢复已取消的上传文件,并自动开始上传。
resumeFile(int index)
上传控制。
开始上传。
void start();
该方法调用后,会触发
onUploadStarted
回调。如果通过上传地址和凭证方式上传,需要在该回调方法中设置上传地址和凭证。代码如下:void setUploadAuthAndAddress(UploadFileInfo uploadFileInfo, String uploadAuth, String uploadAddress)
停止上传,如果有文件正在上传中,则取消上传。
void stop();
说明停止上传后如需恢复上传,请调用
resumeFile
恢复待上传文件,或者清空队列后重新添加文件上传。暂停上传。
void pause();
恢复上传。
void resume();
回调处理。
上传进度
每上传一个分片,会触发
onUploadProgress
回调,回调参数包括已上传文件大小uploadedSize
和总文件大小totalSize
。上传成功
上传成功时,会触发
onUploadSucceed
回调。回调包含上传结果的videoId
和imageUrl
属性。上传失败
上传失败时,会触发
onUploadFailed
回调。在该回调方法中,可以通过code
和message
查看具体原因,并在页面上提示。更多错误码信息,请参见错误码表和OSS错误码。凭证过期处理
上传凭证或STS过期,会触发
onSTSTokenExpried
回调。在该回调方法中,可以向AppServer重新请求新的STS凭证,并调用以下方法继续上传。refreshSTSToken(accessKeyId,accessKeySecret,securityToken,expriedTime);
超时处理
上传超时,会触发
uploadRetry
回调并自动重试。在该回调方法中,可以在页面上给予提示或者调用cancel
方法停止上传。此外,可以设置maxRetryCount
属性,指定最大重试次数。超时重试可以继续上传时,会触发uploadRetryResume
回调并恢复上传。
高级设置
VODUploadClient
支持以下高级设置。
/**
上传文件到服务端是否转码,默认值YES
*/
void setTranscodeMode(boolean bool);
/**
分片大小,默认值1024 * 1024
*/
void setPartSize(long partSize);
/**
* 指定视频文件的存储区域
*/
void setStorageLocation(String storageLocation);
/**
* 设置转码模版组Id
*/
void setTemplateGroupId(String templateGroupId);
在文档使用中是否遇到以下问题
更多建议
匿名提交