首页 java开发 断点续传上传

断点续传上传

[2018-10-29 13:34 类别:java开发 阅读(492) ]
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,
请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 创建OSSClient实例。OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

ObjectMetadata meta = new ObjectMetadata();// 指定上传的内容类型。meta.setContentType("text/plain");
// 通过UploadFileRequest设置多个参数。
UploadFileRequest uploadFileRequest = new UploadFileRequest("<yourBucketName>","<yourObjectName>");
// 通过UploadFileRequest设置单个参数。
// 设置存储空间名称。
//uploadFileRequest.setBucketName("<yourBucketName>");
// 设置文件名称。
//uploadFileRequest.setKey("<yourObjectName>");
// 指定上传的本地文件。
uploadFileRequest.setUploadFile("<yourLocalFile>");
// 指定上传并发线程数,默认为1。uploadFileRequest.setTaskNum(5);
// 指定上传的分片大小,范围为100KB~5GB,默认为文件大小/10000。
uploadFileRequest.setPartSize(1 * 1024 * 1024);
// 开启断点续传,默认关闭。
uploadFileRequest.setEnableCheckpoint(true);
// 记录本地分片上传结果的文件。开启断点续传功能时需要设置此参数,上传过程中的进度信息会保存在该文件中,
如果某一分片上传失败,再次上传时会根据文件中记录的点继续上传。
上传完成后,该文件会被删除。默认与待上传的本地文件同目录,为uploadFile.ucp。
uploadFileRequest.setCheckpointFile("<yourCheckpointFile>");
// 文件的元数据。
uploadFileRequest.setObjectMetadata(meta);
// 设置上传成功回调,参数为Callback类型。
uploadFileRequest.setCallback("<yourCallbackEvent>");
// 断点续传上传。
ossClient.uploadFile(uploadFileRequest);
// 关闭OSSClient。ossClient.shutdown();
/*    
 * Licensed to the Apache Software Foundation (ASF) under one    
 * or more contributor license agreements.  See the NOTICE file    
 * distributed with this work for additional information    
 * regarding copyright ownership.  The ASF licenses this file    
 * to you under the Apache License, Version 2.0 (the    
 * "License"); you may not use this file except in compliance    
 * with the License.  You may obtain a copy of the License at    
 *    
 *     http://www.apache.org/licenses/LICENSE-2.0    
 *    
 * Unless required by applicable law or agreed to in writing,    
 * software distributed under the License is distributed on an    
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY    
 * KIND, either express or implied.  See the License for the    
 * specific language governing permissions and limitations    
 * under the License.    
 */    
package samples;    
import java.io.IOException;    
import com.aliyun.oss.ClientException;    
import com.aliyun.oss.OSS;    
import com.aliyun.oss.OSSClientBuilder;    
import com.aliyun.oss.OSSException;    
import com.aliyun.oss.model.CompleteMultipartUploadResult;    
import com.aliyun.oss.model.UploadFileRequest;    
import com.aliyun.oss.model.UploadFileResult;    
/**    
 * Examples of uploading with enabling checkpoint file.    
 *    
 */    
public class UploadSample {    
private static String endpoint = "<endpoint, http://oss-cn-hangzhou.aliyuncs.com>";    
private static String accessKeyId = "<accessKeyId>";    
private static String accessKeySecret = "<accessKeySecret>";    
private static String bucketName = "<bucketName>";    
private static String key = "<downloadKey>";    
private static String uploadFile = "<uploadFile>";    
public static void main(String[] args) throws IOException {    
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);    
try {    
UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName, key);    
// The local file to upload---it must exist.    
uploadFileRequest.setUploadFile(uploadFile);    
// Sets the concurrent upload task number to 5.    
uploadFileRequest.setTaskNum(5);    
// Sets the part size to 1MB.    
uploadFileRequest.setPartSize(1024 * 1024 * 1);    
// Enables the checkpoint file. By default it's off.    
uploadFileRequest.setEnableCheckpoint(true);    
UploadFileResult uploadResult = ossClient.uploadFile(uploadFileRequest);    
CompleteMultipartUploadResult multipartUploadResult =     
uploadResult.getMultipartUploadResult();    
System.out.println(multipartUploadResult.getETag());    
} catch (OSSException oe) {    
System.out.println("Caught an OSSException, which means your request made it to OSS, "    
+ "but was rejected with an error response for some reason.");    
System.out.println("Error Message: " + oe.getErrorCode());    
System.out.println("Error Code:       " + oe.getErrorCode());    
System.out.println("Request ID:      " + oe.getRequestId());    
System.out.println("Host ID:           " + oe.getHostId());    
} catch (ClientException ce) {    
System.out.println("Caught an ClientException, which means the client encountered "    
+ "a serious internal problem while trying to communicate with OSS, "    
+ "such as not being able to access the network.");    
System.out.println("Error Message: " + ce.getMessage());    
} catch (Throwable e) {    
e.printStackTrace();    
} finally {    
ossClient.shutdown();    
}    
}    
}


关于博主Jansens