Android阿里云OSS多文件同步上传和删除方案
来源:互联网 发布:淘宝搜索你会感谢我的 编辑:程序博客网 时间:2024/05/22 14:50
上个项目中使用的是阿里云OSS,查阅了官方文档,发现居然没有多文件上传相关说明文档,只有一个单文件异步上传的说明。既没有多文件上传,又没有同步上传,删除文件亦然,凌乱。想到之前做过的七牛云开发,决定用java递归的方式实现多文件同步上传和删除,递归有风险,使用需谨慎哈。
下面是阿里云上传递归体----->
阿里云的配置和初始化官方已经说的很明白了,那么这里就直接了当说关键的:
一般来说我们都是获得多文件对应的本地地址List集合,然后递归每个url进行上传 ---->
/** * 上传多文件 * * @param urls */public void uploadFiles(List<String> urls) {if (null == urls || urls.size() == 0) {return;} // 上传文件ossUpload(urls);}
下面是阿里云上传递归体----->
/** * 阿里云OSS上传(默认是异步多文件上传) * @param urls */private void ossUpload(final List<String> urls) {if (urls.size() <= 0) {// 文件全部上传完毕,这里编写上传结束的逻辑,如果要在主线程操作,最好用Handler或runOnUiThead做对应逻辑return;// 这个return必须有,否则下面报越界异常,原因自己思考下哈}final String url = urls.get(0);if (TextUtils.isEmpty(url)) {urls.remove(0);// url为空就没必要上传了,这里做的是跳过它继续上传的逻辑。ossUpload(urls);return;}File file = new File(url);if (null == file || !file.exists()) {urls.remove(0);// 文件为空或不存在就没必要上传了,这里做的是跳过它继续上传的逻辑。ossUpload(urls);return;}// 文件后缀String fileSuffix = "";if (file.isFile()) {// 获取文件后缀名fileSuffix = file.getName().substring(file.getName().lastIndexOf("."));}// 文件标识符objectKeyfinal String objectKey = "alioss_" + System.currentTimeMillis() + fileSuffix;// 下面3个参数依次为bucket名,ObjectKey名,上传文件路径PutObjectRequest put = new PutObjectRequest(Constant.BUCKET_NAME, objectKey, url);// 设置进度回调put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {@Overridepublic void onProgress(PutObjectRequest request, long currentSize, long totalSize) {// 进度逻辑}});// 异步上传OSSAsyncTask task = MyApp.getOSS().asyncPutObject(put,new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {@Overridepublic void onSuccess(PutObjectRequest request, PutObjectResult result) { // 上传成功urls.remove(0);ossUpload(urls);// 递归同步效果}@Overridepublic void onFailure(PutObjectRequest request, ClientException clientExcepion,ServiceException serviceException) { // 上传失败// 请求异常if (clientExcepion != null) {// 本地异常如网络异常等clientExcepion.printStackTrace();}if (serviceException != null) {// 服务异常Log.e("ErrorCode", serviceException.getErrorCode());Log.e("RequestId", serviceException.getRequestId());Log.e("HostId", serviceException.getHostId());Log.e("RawMessage", serviceException.getRawMessage());}}});// task.cancel(); // 可以取消任务// task.waitUntilFinished(); // 可以等待直到任务完成}
OK,看懂了没,还是蛮简单的,代码注释的也很详细。多文件同步删除与上述上传逻辑属于同一个套路,改几个单词差不多就可以了。这里提醒下,阿里云oss是根据objectKey删除文件的,所以判断文件存不存在是使用官方的代码判断 :
boolean isExist = MyApp.getOSS().doesObjectExist(Constant.BUCKET_NAME, objectKey);这次就不上传源码了,大家有什么疑问之处或需要源码可以直接回复我。
3 0
- Android阿里云OSS多文件同步上传和删除方案
- android 阿里云OSS文件上传
- 阿里云OSS 上传文件
- 阿里云OSS 文件上传
- 阿里oss文件上传
- 阿里云oss springMVC+ajax后台和前端上传文件
- 阿里云上传文件,下载文件 oss
- 文件上传-阿里云OSS-存储文件
- 整合阿里云OSS文件上传1
- 整合阿里云OSS文件上传2
- OSS阿里云文件上传 demo
- Jfinal版阿里云OSS文件上传
- 阿里云OSS上传文件工具类
- java 上传文件到oss(阿里云)
- 阿里云 oss服务器文件上传 java
- 上传文件到阿里云OSS
- springboot上传文件到阿里云OSS
- 阿里云OSS通过URL上传文件
- JEECMSv6源码导入eclipse步骤图文详解
- 闲聊javaweb之servlet
- Javacript 对元素赋值的处理
- yii 分页
- 文章标题
- Android阿里云OSS多文件同步上传和删除方案
- python3:(unicode error) 'utf-8' codec can't decode
- linux环境下安装jdk
- 项目import AVFoundation的时候会出现Ambiguous use of ‘subscript’ 的错误
- redis基本配置
- IDEA中web项目部署到Tomcat的一些小问题
- fork()
- Win10下IE11的cookies文件放在哪里?
- [转载]$.ajax提交,后台接受到的值总是乱码?明天再总结