首先,上传的方法有:
package com.bluemobi.util.imgUtil;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.net.URL;
import java.util.*;
import com.aliyun.oss.ClientConfiguration;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.*;
public class AliyunUtil {
private static String endpoint = "oss-cn-beijing.aliyuncs.com";
private static String accessKeyId = "";
private static String accessKeySecret = "";
private static OSSClient createClient(){
/*// endpoint以杭州为例,其它region请按实际情况填写
endpoint = "your-endpoint";
// accessKey请登录https://ak-console.aliyun.com/#/查看
accessKeyId = "your accesskeyid";
accessKeySecret = "your accesskeySecret";*/
// endpoint以杭州为例,其它region请按实际情况填写
endpoint = "oss-cn-beijing.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
accessKeyId = "your accesskeyid";
accessKeySecret = "your accesskeySecret";
// 创建ClientConfiguration实例
//设置oss的配置信息
ClientConfiguration conf = new ClientConfiguration();
// 设置OSSClient使用的最大连接数,默认1024
conf.setMaxConnections(200);
// 设置请求超时时间,默认50秒
conf.setSocketTimeout(10000);
// 设置失败请求重试次数,默认3次
conf.setMaxErrorRetry(5);
// 创建OSSClient实例
OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
/*// 关闭client
client.shutdown();*/
return client;
}
public static URL getUrl(String keyname){
OSSClient client =createClient();
//设置bucket权限
//client.setBucketAcl("tr1912test", CannedAccessControlList.Private);
String bucketName = "your buckecname";
String key = keyname;
// 设置URL过期时间为1小时
Date expiration = new Date(new Date().getTime() + 3600 * 1000);
// 生成URL
URL url = client.generatePresignedUrl(bucketname, key, expiration);
return url;
}
/**
* 下载文件
*/
public static void downObject(String bucketName,String key,File file){
OSSClient client =createClient();
if(!client.doesBucketExist(bucketName)){
client.createBucket(bucketName);
}
PutObjectResult por = client.putObject(bucketName, key, file);
}
/************************************************************流式上传begin****************************************************************************/
/**
* 流式上传文件-上传字符串
*/
public static void upStringObject(String bucketName,String key,String object){
OSSClient client =createClient();
if(!client.doesBucketExist(bucketName)){
//注释掉的是bucket是可以设置权限的 默认的方式是私有读写
/*CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
// 设置bucket权限
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);*/
client.createBucket(bucketName);
}
PutObjectResult por = client.putObject(bucketName, key, new ByteArrayInputStream(object.getBytes()));
client.shutdown();
}
/**
* 流式上传文件-byte数组
*/
public static void upByteObject(String bucketName,String key,byte[] object){
OSSClient client =createClient();
if(!client.doesBucketExist(bucketName)){
//注释掉的是bucket是可以设置权限的 默认的方式是私有读写
/*CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
// 设置bucket权限
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);*/
client.createBucket(bucketName);
}
PutObjectResult por = client.putObject(bucketName, key, new ByteArrayInputStream(object));
client.shutdown();
}
/**
* 流式上传文件-上传网络流
* InputStream inputStream = new URL("https://www.aliyun.com/").openStream();
*/
public static void upWLObject(String bucketName,String key,InputStream inputStream){
OSSClient client =createClient();
if(!client.doesBucketExist(bucketName)){
//注释掉的是bucket是可以设置权限的 默认的方式是私有读写
/*CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
// 设置bucket权限
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);*/
client.createBucket(bucketName);
}
PutObjectResult por = client.putObject(bucketName, key, inputStream);
client.shutdown();
}
/**
* 流式上传文件-上传文件流
* InputStream inputStream = new FileInputStream("localFile");
*/
public static URL upFObject(String bucketName,String key,InputStream inputStream){
OSSClient client =createClient();
if(!client.doesBucketExist(bucketName)){
//注释掉的是bucket是可以设置权限的 默认的方式是私有读写
/*CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
// 设置bucket权限
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);*/
client.createBucket(bucketName);
}
PutObjectResult por = client.putObject(bucketName, key, inputStream);
//获取该文件在阿里云的路径
URL url=getUrl(key);
client.shutdown();
return url;
}
/**
* 流式上传文件-上传文件
*/
public static URL upFileObject(String bucketName,String key,File file){
OSSClient client =createClient();
if(!client.doesBucketExist(bucketName)){
//注释掉的是bucket是可以设置权限的 默认的方式是私有读写
/*CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
// 设置bucket权限
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);*/
client.createBucket(bucketName);
}
PutObjectResult por = client.putObject(bucketName, key, file);
URL imageurl=getUrl(key);
client.shutdown();
return imageurl;
}
/************************************************************流式上传end****************************************************************************/
/************************************************************追加上传begin****************************************************************************/
/**
* 追加上传
*/
public static void appendObject(String bucketName,String key,String content){
OSSClient client =createClient();
/*if(!client.doesBucketExist(bucketName)){
//注释掉的是bucket是可以设置权限的 默认的方式是私有读写
CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
// 设置bucket权限
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);
client.createBucket(bucketName);
}*/
AppendObjectRequest appendObjectRequest = new AppendObjectRequest(bucketName,
key, new ByteArrayInputStream(content.getBytes()));
// 第一次追加
appendObjectRequest.setPosition(0L);
AppendObjectResult appendObjectResult = client.appendObject(appendObjectRequest);
// 第二次追加
appendObjectRequest.setPosition(appendObjectResult.getNextPosition());
appendObjectResult = client.appendObject(appendObjectRequest);
// 第三次追加
appendObjectRequest.setPosition(appendObjectResult.getNextPosition());
appendObjectResult = client.appendObject(appendObjectRequest);
// 关闭client
client.shutdown();
}
/************************************************************追加上传end****************************************************************************/
/**
* 断点续传
*/
public static void continueObject(String bucketName,String key,String localfile){
OSSClient client =createClient();
// 设置断点续传请求
UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName, key);
// 指定上传的本地文件
uploadFileRequest.setUploadFile(localfile);
// 指定上传并发线程数
uploadFileRequest.setTaskNum(5);
// 指定上传的分片大小
uploadFileRequest.setPartSize(1 * 1024 * 1024);
// 开启断点续传
uploadFileRequest.setEnableCheckpoint(true);
// 断点续传上传
try {
client.uploadFile(uploadFileRequest);
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
client.shutdown();
}
/**
* 分片上传
*/
public static void areaObject(String bucketName,String key,String localfile){
OSSClient client =createClient();
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key);
InitiateMultipartUploadResult result = client.initiateMultipartUpload(request);
String uploadId = result.getUploadId();
List<PartETag> partETags = new ArrayList<PartETag>();
InputStream instream = null;
try {
instream = new FileInputStream(new File("<localFile>"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(bucketName);
uploadPartRequest.setKey(key);
uploadPartRequest.setUploadId(uploadId);
uploadPartRequest.setInputStream(instream);
// 设置分片大小,除最后一个分片外,其它分片要大于100KB
uploadPartRequest.setPartSize(100 * 1024);
// 设置分片号,范围是1~10000,
uploadPartRequest.setPartNumber(1);
UploadPartResult uploadPartResult = client.uploadPart(uploadPartRequest);
partETags.add(uploadPartResult.getPartETag());
Collections.sort(partETags, new Comparator<PartETag>() {
@Override
public int compare(PartETag p1, PartETag p2) {
return p1.getPartNumber() - p2.getPartNumber();
}
});
CompleteMultipartUploadRequest completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(bucketName, key, uploadId, partETags);
client.completeMultipartUpload(completeMultipartUploadRequest);
client.shutdown();
}
public static void main(String[] args){
File file=new File("C:/Users/admin/Desktop/羊图/20120324103707_whnxf.thumb.700_0.jpeg");
upFileObject("your bucketname","yang",file);
System.out.println();
}
}