Commit a7a3bbdeae59c5f9c18c631b7beb474f8db29bfd

Authored by 王琳
1 parent 0258382d

更新SDK,删除获取bucketName方法,增加初始化上传SDK方法

app/build.gradle
... ... @@ -24,5 +24,5 @@ dependencies {
24 24 compile fileTree(include: ['*.jar'], dir: 'libs')
25 25 compile 'com.android.support:appcompat-v7:26.+'
26 26 compile 'com.android.support.constraint:constraint-layout:1.0.2'
27   - compile 'com.cnlive:lib_upload:2.0.1'
  27 + compile 'com.cnlive:lib_upload:2.0.2'
28 28 }
... ...
app/src/main/java/com/cnlive/cnUploadDemo/Config.java
... ... @@ -5,6 +5,8 @@ package com.cnlive.cnUploadDemo;
5 5 */
6 6  
7 7 public class Config {
  8 + //设置分块大小
8 9 public static final long PART_SIZE = 5 * 1024 * 1024;
  10 + //设置文件最大值,如果超过则分块上传
9 11 public static final long MULTI_UPLOAD_THREADHOLD = 16 * 1024 * 1024;
10 12 }
... ...
app/src/main/java/com/cnlive/cnUploadDemo/MultiUploader.java
... ... @@ -127,7 +127,7 @@ public class MultiUploader {
127 127 return false;
128 128 } else {
129 129 isAbortMultipartUpload = false;
130   - final CNInitiateMultipartUploadRequest request = new CNInitiateMultipartUploadRequest(bucketName, key);
  130 + final CNInitiateMultipartUploadRequest request = new CNInitiateMultipartUploadRequest( key);
131 131 request.setCannedACL(CNCannedAccessControlList.PublicRead);
132 132 request.setContentType("video/mp4");
133 133 cnUpload.initiateMultipartUpload(request, new CNInitiateMultipartUploadResponseListener() {
... ... @@ -186,7 +186,7 @@ public class MultiUploader {
186 186 }
187 187 }
188 188 };
189   - cnUpload.listParts(bucketName, key, uploadId, listener);
  189 + cnUpload.listParts(key, uploadId, listener);
190 190 }
191 191  
192 192 /**
... ... @@ -246,7 +246,7 @@ public class MultiUploader {
246 246 // } else {
247 247 final int partNumber = ((Integer) this.leftParts.get(i)).intValue();
248 248 long offset = partNumber * this.partSize - partSize;
249   - CNUploadPartRequest request = new CNUploadPartRequest(bucketName, key, uploadId, file, offset, partNumber, Math.min(file.length() - offset, partSize));
  249 + CNUploadPartRequest request = new CNUploadPartRequest(key, uploadId, file, offset, partNumber, Math.min(file.length() - offset, partSize));
250 250 request.setCannedACL(CNCannedAccessControlList.PublicReadWrite);
251 251 request.setContentType("video/mp4");
252 252 cnUpload.uploadPart(request, new MyUploadPartResponseHandler(key, partNumber, uploadId) {
... ... @@ -288,7 +288,7 @@ public class MultiUploader {
288 288 * 取消分块上传
289 289 */
290 290 public void cancelUpload() {
291   - CNAbortMultipartUploadRequest request = new CNAbortMultipartUploadRequest(bucketName, key, uploadId);
  291 + CNAbortMultipartUploadRequest request = new CNAbortMultipartUploadRequest(key, uploadId);
292 292 cnUpload.abortMultipartUpload(request, new CNAbortMultipartUploadResponseListener() {
293 293 @Override
294 294 public void onFailure(int i, UploadError uploadError, Header[] headers, String s, Throwable throwable) {
... ...
app/src/main/java/com/cnlive/cnUploadDemo/activity/UploadActivity.java
... ... @@ -27,6 +27,7 @@ import com.cnlive.libs.upload.listener.CNInitiateMultipartUploadResponseListener
27 27 import com.cnlive.libs.upload.listener.CNListPartsResponseListener;
28 28 import com.cnlive.libs.upload.listener.CNPutObjectResponseListener;
29 29 import com.cnlive.libs.upload.listener.CNUploadPartResponseListener;
  30 +import com.cnlive.libs.upload.model.CNObjectMetadata;
30 31 import com.cnlive.libs.upload.model.CNPartETag;
31 32 import com.cnlive.libs.upload.model.UploadError;
32 33 import com.cnlive.libs.upload.model.acl.CNCannedAccessControlList;
... ... @@ -40,6 +41,7 @@ import com.cnlive.libs.upload.services.CNListPartsRequest;
40 41 import com.cnlive.libs.upload.services.CNPutObjectRequest;
41 42 import com.cnlive.libs.upload.services.CNUploadPartRequest;
42 43 import com.cnlive.libs.upload.upload.CNUpload;
  44 +import com.cnlive.libs.upload.upload.callback.OnInitListener;
43 45 import com.cnlive.libs.upload.upload.callback.OnUploadedUrlInfoListener;
44 46 import com.cnlive.libs.upload.upload.network.model.FileType;
45 47  
... ... @@ -71,6 +73,8 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
71 73  
72 74 private String objectKey;
73 75  
  76 + private boolean initSuccess;
  77 +
74 78 @Override
75 79 protected void onCreate(@Nullable Bundle savedInstanceState) {
76 80 super.onCreate(savedInstanceState);
... ... @@ -82,7 +86,10 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
82 86 }
83 87  
84 88 private void setup() {
  89 + //实例化上传
85 90 cnUpload = new CNUpload(this);
  91 + //初始化上传
  92 + cnUpload.initCNUpload(onInitListener);
86 93 dataSource = new HashMap<String, List<UploadFile>>();
87 94 adapter = new FileAdapter(UploadActivity.this, null);
88 95 listView.setOnItemClickListener(UploadActivity.this);
... ... @@ -148,15 +155,23 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
148 155 /**
149 156 * 上传操作,如果大于16MB,则使用分块上传
150 157 */
151   - private void doUpload(UploadFile item) {
  158 + private void doUpload(final UploadFile item) {
152 159 if (item.file == null) {
153 160 throw new IllegalArgumentException("file can not be null");
154 161 }
155 162  
  163 + if (!initSuccess) {
  164 + return;
  165 + }
  166 +
156 167 if (item.file.length() >= Config.MULTI_UPLOAD_THREADHOLD) {
  168 +
  169 + //多块上传 当文件超过一定的大小后,SDK内部会根据APP设置的分块大小对文件进行分块,然后进行分块上传
157 170 doMultipartUpload(item);
158 171 } else {
  172 + //单块上传
159 173 doSingleUpload(item);
  174 +
160 175 }
161 176 }
162 177  
... ... @@ -167,14 +182,16 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
167 182 */
168 183 private void doSingleUpload(final UploadFile item) {
169 184  
170   -
171 185 objectKey = item.file.getName();
172   - CNPutObjectRequest request = new CNPutObjectRequest(getBucketName(), item.file.getName(), item.file);
  186 + CNPutObjectRequest request = new CNPutObjectRequest(item.file.getName(), item.file);
  187 + //Bucket权限管理
173 188 request.setCannedACL(CNCannedAccessControlList.PublicRead);
174   -// request.setContentType("video/mp4");
  189 + //设置上传的文件的内容类型
  190 + request.setContentType("video/mp4");
175 191 cnUpload.putObject(request, new CNPutObjectResponseListener() {
176 192 @Override
177 193 public void onTaskFailure(int i, UploadError uploadError, Header[] headers, String s, Throwable throwable) {
  194 + //失败
178 195 Log.d(TAG, uploadError.getErrorMessage() + " : " + s + " : " + i);
179 196 List<UploadFile> uploadFiles = dataSource.get(currentDir
180 197 .getPath());
... ... @@ -190,12 +207,14 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
190 207  
191 208 @Override
192 209 public void onTaskSuccess(int i, Header[] headers) {
  210 + //上传成功
193 211 Log.i(TAG, "single upload success");
194 212 getUploadedUrl();
195 213 }
196 214  
197 215 @Override
198 216 public void onTaskStart() {
  217 + //上传开始
199 218 List<UploadFile> uploadFiles = dataSource.get(currentDir
200 219 .getPath());
201 220 for (UploadFile file : uploadFiles) {
... ... @@ -212,6 +231,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
212 231  
213 232 @Override
214 233 public void onTaskFinish() {
  234 + //上传结束 包括上传成功结束与上传失败结束
215 235 List<UploadFile> uploadFiles = dataSource.get(currentDir
216 236 .getPath());
217 237 for (UploadFile file : uploadFiles) {
... ... @@ -228,11 +248,13 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
228 248  
229 249 @Override
230 250 public void onTaskCancel() {
  251 + //上传取消
231 252 Log.d(TAG, "single upload cancel");
232 253 }
233 254  
234 255 @Override
235 256 public void onTaskProgress(double v) {
  257 + //上传进度
236 258 List<UploadFile> uploadFiles = dataSource.get(currentDir.getPath());
237 259 for (UploadFile file : uploadFiles) {
238 260 if (file.file.getPath().equalsIgnoreCase(item.file.getPath())) {
... ... @@ -255,12 +277,15 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
255 277 private void doMultipartUpload(final UploadFile item) {
256 278  
257 279 objectKey = item.file.getName();
258   - CNInitiateMultipartUploadRequest request = new CNInitiateMultipartUploadRequest(getBucketName(), item.file.getName());
  280 + CNInitiateMultipartUploadRequest request = new CNInitiateMultipartUploadRequest(item.file.getName());
  281 + //设置内容类型
259 282 request.setContentType("video/mp4");
  283 + //设置bucket权限
260 284 request.setCannedACL(CNCannedAccessControlList.PublicRead);
261 285 cnUpload.initiateMultipartUpload(request, new CNInitiateMultipartUploadResponseListener() {
262 286 @Override
263 287 public void onFailure(int i, UploadError uploadError, Header[] headers, String s, Throwable throwable) {
  288 + //初始化多块上传失败
264 289 List<UploadFile> uploadFiles = dataSource
265 290 .get(currentDir.getPath());
266 291 for (UploadFile file : uploadFiles) {
... ... @@ -275,6 +300,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
275 300  
276 301 @Override
277 302 public void onSuccess(int i, Header[] headers, CNInitiateMultipartUploadResult cnInitiateMultipartUploadResult) {
  303 + //初始化多块上传成功
278 304 List<UploadFile> uploadFiles = dataSource
279 305 .get(currentDir.getPath());
280 306 for (UploadFile file : uploadFiles) {
... ... @@ -296,7 +322,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
296 322 private void beginMultiUpload(CNInitiateMultipartUploadResult initResult,
297 323 UploadFile item) {
298 324 localUploadPartRequestFactory = new UploadPartRequestFactory(
299   - initResult.getBucket(), initResult.getKey(),
  325 + initResult.getKey(),
300 326 initResult.getUploadId(), item.file, Config.PART_SIZE);
301 327 Message message = myHandler.obtainMessage();
302 328 message.what = UPLOAD_NEXT_PART;
... ... @@ -321,6 +347,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
321 347  
322 348 @Override
323 349 public void onSuccess(int i, Header[] headers, CNPartETag cnPartETag) {
  350 + //上传分块成功
324 351 Message message = myHandler.obtainMessage();
325 352 message.what = UPLOAD_NEXT_PART;
326 353 Bundle bundle = new Bundle();
... ... @@ -332,6 +359,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
332 359  
333 360 @Override
334 361 public void onFailure(int i, UploadError uploadError, Header[] headers, String s, Throwable throwable) {
  362 + //上传分块失败
335 363 List<UploadFile> uploadFiles = dataSource.get(currentDir
336 364 .getPath());
337 365 for (UploadFile file : uploadFiles) {
... ... @@ -348,7 +376,8 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
348 376  
349 377 @Override
350 378 public void onTaskProgress(double v) {
351   - long uploadedInpart = (long) (v / 100 * request.contentLength);
  379 + //上传分块进度
  380 + long uploadedInpart = (long) (v / 100 * request.getContentLength());
352 381 long uploadedInFile = uploadedInpart
353 382 + requestFactory.getUploadedSize();
354 383 progressInFile = Double
... ... @@ -393,6 +422,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
393 422 cnUpload.listParts(request, new CNListPartsResponseListener() {
394 423 @Override
395 424 public void onFailure(int i, UploadError uploadError, Header[] headers, String s, Throwable throwable) {
  425 + //罗列已经上传的分块失败
396 426 List<UploadFile> uploadFiles = dataSource.get(currentDir
397 427 .getPath());
398 428 for (UploadFile file : uploadFiles) {
... ... @@ -407,6 +437,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
407 437  
408 438 @Override
409 439 public void onSuccess(int i, Header[] headers, CNListPartsResult cnListPartsResult) {
  440 + //罗列已经上传的分块成功
410 441 Message message = myHandler.obtainMessage();
411 442 message.what = LIST_PART_FINISH;
412 443 message.obj = cnListPartsResult;
... ... @@ -464,7 +495,7 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
464 495 * 取消分块上传
465 496 */
466 497 private void abortMultiUpload() {
467   - CNAbortMultipartUploadRequest request = new CNAbortMultipartUploadRequest(localUploadPartRequestFactory.getBucketName(), localUploadPartRequestFactory.getObjectKey(), localUploadPartRequestFactory.getUploadId());
  498 + CNAbortMultipartUploadRequest request = new CNAbortMultipartUploadRequest(localUploadPartRequestFactory.getObjectKey(), localUploadPartRequestFactory.getUploadId());
468 499 cnUpload.abortMultipartUpload(request, new CNAbortMultipartUploadResponseListener() {
469 500 @Override
470 501 public void onFailure(int i, UploadError uploadError, Header[] headers, String s, Throwable throwable) {
... ... @@ -509,7 +540,6 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
509 540 .get("requestFactory");
510 541 item = (UploadFile) bundle.get("uploadFile");
511 542 CNListPartsRequest listRequest = new CNListPartsRequest(
512   - requestFactory.getBucketName(),
513 543 requestFactory.getObjectKey(),
514 544 requestFactory.getUploadId());
515 545 listParts(listRequest, item);
... ... @@ -536,17 +566,23 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
536 566  
537 567 /**
538 568 * 获取文件上传后的路径
539   - * @param objectKey
540   - * @param fileType 文件类型:VIDEO_FILE-->视频文件 COMMON_FILE-->普通文件
541   - * @param listener
542 569 */
543 570 public void getUploadedUrl() {
544 571 cnUpload.getUploadedUrlInfo(objectKey, FileType.COMMON_FILE, new OnUploadedUrlInfoListener() {
  572 + /**
  573 + * 返回资源路径
  574 + * @param s
  575 + */
545 576 @Override
546 577 public void onSuccess(String s) {
547 578 Log.e(TAG, s);
548 579 }
549 580  
  581 + /**
  582 + * 返回错误信息
  583 + * @param s
  584 + * @param s1
  585 + */
550 586 @Override
551 587 public void onError(String s, String s1) {
552 588 Log.e(TAG, s + " : " + s1);
... ... @@ -555,21 +591,30 @@ public class UploadActivity extends Activity implements AdapterView.OnItemClickL
555 591 }
556 592  
557 593 /**
558   - * 获取上传需要的bucketName
559   - *
560   - * @return
  594 + * 初始化上传方法的回调
  595 + * 如果返回error,则代表上传SDK没有初始化成功,无法做后续的上传操作
561 596 */
562   - private String getBucketName() {
  597 + private OnInitListener onInitListener = new OnInitListener() {
  598 + /**
  599 + * 初始化失败回调
  600 + * @param s 返回errorCode
  601 + * @param s1 返回errorMessage
  602 + */
  603 + @Override
  604 + public void onError(String s, String s1) {
  605 + Log.e(TAG, s + " : " + s1);
  606 + initSuccess = false;
  607 + }
563 608  
564   - String bucketName;
565   - if (cnUpload.getBucketInfo().getErrorCode().equals("0")) {
566   - Log.e(TAG, cnUpload.getBucketInfo().getErrorMessage());
567   - bucketName = cnUpload.getBucketInfo().getBucketName();
568   - } else {
569   - bucketName = "";
570   - Log.e(TAG, cnUpload.getBucketInfo().getErrorMessage());
  609 + /**
  610 + * 初始化成功回调
  611 + * @param s 返回bucketName
  612 + */
  613 + @Override
  614 + public void onSuccess(String s) {
  615 + Log.e(TAG, s);
  616 + initSuccess = true;
571 617 }
572   - return bucketName;
573   - }
  618 + };
574 619  
575 620 }
... ...
app/src/main/java/com/cnlive/cnUploadDemo/app/MyApplication.java
... ... @@ -14,6 +14,8 @@ public class MyApplication extends Application {
14 14 public void onCreate() {
15 15 super.onCreate();
16 16  
  17 + //初始化上传SDK init(Context, appId, appKey)
  18 + //appId & appKey 由开放平台应用配置中获取
17 19 Config.init(this, "60_jaxisljz90", "1ee33b54e18a66b94eca7f8149408565b02f749d314926");
18 20  
19 21 }
... ...
app/src/main/java/com/cnlive/cnUploadDemo/utils/UploadPartRequestFactory.java
... ... @@ -12,7 +12,6 @@ import java.io.Serializable;
12 12 */
13 13 public class UploadPartRequestFactory implements Serializable{
14 14 private static final long serialVersionUID = 1L;
15   - private String bucketName;
16 15 private String key;
17 16 private String uploadId;
18 17 private File file;
... ... @@ -22,9 +21,8 @@ public class UploadPartRequestFactory implements Serializable{
22 21 public long partSize ;
23 22 private long uploadedSize;
24 23  
25   - public UploadPartRequestFactory(String bucketName ,String objectKey , String uploadId , File file , long partSize ) {
  24 + public UploadPartRequestFactory(String objectKey , String uploadId , File file , long partSize ) {
26 25 this.uploadId = uploadId;
27   - this.bucketName = bucketName;
28 26 this.key = objectKey;
29 27 this.file = file;
30 28 this.remainingBytes = file.length();
... ... @@ -42,7 +40,7 @@ public class UploadPartRequestFactory implements Serializable{
42 40 boolean bool = this.remainingBytes - this.partSize <= 0L;
43 41 CNUploadPartRequest localUploadPartRequest = null;
44 42 uploadedSize = file.length() - this.remainingBytes ;
45   - localUploadPartRequest = new CNUploadPartRequest(bucketName, key,uploadId, file, offset, partNumber++, partSize);
  43 + localUploadPartRequest = new CNUploadPartRequest( key,uploadId, file, offset, partNumber++, partSize);
46 44 this.offset += partSize;
47 45 this.remainingBytes -= partSize;
48 46 localUploadPartRequest.setLastPart(bool);
... ... @@ -58,10 +56,6 @@ public class UploadPartRequestFactory implements Serializable{
58 56 return this.file;
59 57 }
60 58  
61   - public synchronized String getBucketName(){
62   - return this.bucketName;
63   - }
64   -
65 59 public synchronized String getUploadId(){
66 60 return this.uploadId;
67 61 }
... ...
lib/libcnliveupload.jar
No preview for this file type