| | |
| | | import com.qcloud.cos.region.Region;
|
| | |
|
| | | public class COSManager {
|
| | | static long appId = 0L;
|
| | | static String secretId = "";
|
| | | static String secretKey = "";
|
| | | // 设置要操作的bucket
|
| | | static String bucketName = "";
|
| | | static COSClient cosClient;
|
| | | static String totalBucketName = "";
|
| | | static long appId = 0L;
|
| | | static String secretId = "";
|
| | | static String secretKey = "";
|
| | | // 设置要操作的bucket
|
| | | static String bucketName = "";
|
| | | static COSClient cosClient;
|
| | | static String totalBucketName = "";
|
| | | static String accessHost = "";
|
| | |
|
| | | static COSManager instance;
|
| | | static COSManager instance;
|
| | |
|
| | | public static COSManager getInstance() {
|
| | | if (instance == null)
|
| | | instance = new COSManager();
|
| | | return instance;
|
| | | }
|
| | | public static COSManager getInstance() {
|
| | | if (instance == null)
|
| | | instance = new COSManager();
|
| | | return instance;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 初始化,在使用之前必须调用此方法
|
| | | * |
| | | * @param params
|
| | | */
|
| | | public void init(COSInitParams params) {
|
| | | appId = params.getAppId();
|
| | | secretId = params.getSecretId();
|
| | | secretKey = params.getSecretKey();
|
| | | bucketName = params.getBucketName();
|
| | | COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
|
| | | ClientConfig clientConfig = new ClientConfig(new Region(params.getRegion()));
|
| | | cosClient = new COSClient(cred, clientConfig);
|
| | | // bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
|
| | | totalBucketName = bucketName + "-" + appId;
|
| | | }
|
| | | /**
|
| | | * 初始化,在使用之前必须调用此方法
|
| | | *
|
| | | * @param params
|
| | | */
|
| | | public void init(COSInitParams params) {
|
| | | appId = params.getAppId();
|
| | | secretId = params.getSecretId();
|
| | | secretKey = params.getSecretKey();
|
| | | bucketName = params.getBucketName();
|
| | | COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
|
| | | ClientConfig clientConfig = new ClientConfig(new Region(params.getRegion()));
|
| | | cosClient = new COSClient(cred, clientConfig);
|
| | | // bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
|
| | | totalBucketName = bucketName + "-" + appId;
|
| | | accessHost = params.getAccessHost();
|
| | | }
|
| | |
|
| | | public FileUploadResult uploadFile(File f, String key) {
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | PutObjectRequest putObjectRequest = new PutObjectRequest(totalBucketName, key, f);
|
| | | public FileUploadResult uploadFile(File f, String key) {
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | PutObjectRequest putObjectRequest = new PutObjectRequest(totalBucketName, key, f);
|
| | |
|
| | | try {
|
| | | PutObjectResult result = cosClient.putObject(putObjectRequest);
|
| | | try {
|
| | | PutObjectResult result = cosClient.putObject(putObjectRequest);
|
| | |
|
| | | return new FileUploadResult(String.format("http://%s.file.myqcloud.com%s", totalBucketName, key),
|
| | | result.getETag());
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | | if (StringUtil.isNullOrEmpty(accessHost)) {
|
| | | return new FileUploadResult(String.format("http://%s.file.myqcloud.com%s", totalBucketName, key),
|
| | | result.getETag());
|
| | | } else {
|
| | | return new FileUploadResult(String.format("%s%s", accessHost, key),
|
| | | result.getETag());
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public FileUploadResult uploadInputStream(InputStream inputStream, String key) {
|
| | | int count = 0;
|
| | | try {
|
| | | count = inputStream.available();
|
| | | } catch (IOException e1) {
|
| | | e1.printStackTrace();
|
| | | }
|
| | | public FileUploadResult uploadInputStream(InputStream inputStream, String key) {
|
| | | int count = 0;
|
| | | try {
|
| | | count = inputStream.available();
|
| | | } catch (IOException e1) {
|
| | | e1.printStackTrace();
|
| | | }
|
| | |
|
| | | ObjectMetadata metadata = new ObjectMetadata();
|
| | | metadata.setContentLength(count);
|
| | | ObjectMetadata metadata = new ObjectMetadata();
|
| | | metadata.setContentLength(count);
|
| | |
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | PutObjectRequest putObjectRequest = new PutObjectRequest(totalBucketName, key, inputStream, metadata);
|
| | | try {
|
| | | PutObjectResult result = cosClient.putObject(putObjectRequest);
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | PutObjectRequest putObjectRequest = new PutObjectRequest(totalBucketName, key, inputStream, metadata);
|
| | | try {
|
| | | PutObjectResult result = cosClient.putObject(putObjectRequest);
|
| | |
|
| | | return new FileUploadResult(String.format("http://%s.file.myqcloud.com%s", totalBucketName, key),
|
| | | result.getETag());
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | | return new FileUploadResult(String.format("http://%s.file.myqcloud.com%s", totalBucketName, key),
|
| | | result.getETag());
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public FileUploadResult uploadFile(InputStream inputStream, String key) {
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | String dir = FileUtil.getCacheDir();
|
| | | String tempPath = dir + "/temp_" + System.currentTimeMillis() + "_" + (long) (Math.random() * 100000000);
|
| | | try {
|
| | | public FileUploadResult uploadFile(InputStream inputStream, String key) {
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | String dir = FileUtil.getCacheDir();
|
| | | String tempPath = dir + "/temp_" + System.currentTimeMillis() + "_" + (long) (Math.random() * 100000000);
|
| | | try {
|
| | |
|
| | | try {
|
| | | FileUtil.saveAsFile(inputStream, tempPath);
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (new File(tempPath).exists()) {
|
| | | return uploadFile(new File(tempPath), key);
|
| | | }
|
| | | return null;
|
| | | } finally {
|
| | | if (new File(tempPath).exists())
|
| | | new File(tempPath).delete();
|
| | | }
|
| | | }
|
| | | try {
|
| | | FileUtil.saveAsFile(inputStream, tempPath);
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (new File(tempPath).exists()) {
|
| | | return uploadFile(new File(tempPath), key);
|
| | | }
|
| | | return null;
|
| | | } finally {
|
| | | if (new File(tempPath).exists())
|
| | | new File(tempPath).delete();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取Object列表
|
| | | * |
| | | * @param prefix-匹配字符
|
| | | * @param count-最大1000
|
| | | * @param marker-起点标记
|
| | | * @return
|
| | | */
|
| | | /**
|
| | | * 获取Object列表
|
| | | *
|
| | | * @param prefix-匹配字符
|
| | | * @param count-最大1000
|
| | | * @param marker-起点标记
|
| | | * @return
|
| | | */
|
| | |
|
| | | public ObjectListing getObjectList(String prefix, String marker, int count) {
|
| | | ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
|
| | | listObjectsRequest.setBucketName(totalBucketName);
|
| | | listObjectsRequest.setDelimiter("/");
|
| | | listObjectsRequest.setPrefix(prefix);
|
| | | listObjectsRequest.setMaxKeys(count);
|
| | | listObjectsRequest.setMarker(marker);
|
| | | ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
|
| | | return objectListing;
|
| | | }
|
| | | public ObjectListing getObjectList(String prefix, String marker, int count) {
|
| | | ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
|
| | | listObjectsRequest.setBucketName(totalBucketName);
|
| | | listObjectsRequest.setDelimiter("/");
|
| | | listObjectsRequest.setPrefix(prefix);
|
| | | listObjectsRequest.setMaxKeys(count);
|
| | | listObjectsRequest.setMarker(marker);
|
| | | ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
|
| | | return objectListing;
|
| | | }
|
| | |
|
| | | public COSObjectSummary getObjectDetail(String prefix) {
|
| | | ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
|
| | | listObjectsRequest.setBucketName(totalBucketName);
|
| | | listObjectsRequest.setDelimiter("/");
|
| | | listObjectsRequest.setPrefix(prefix);
|
| | | listObjectsRequest.setMaxKeys(1);
|
| | | listObjectsRequest.setMarker(null);
|
| | | ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
|
| | | if (objectListing.getObjectSummaries() != null && objectListing.getObjectSummaries().size() > 0) {
|
| | | return objectListing.getObjectSummaries().get(0);
|
| | | }
|
| | | return null;
|
| | | }
|
| | | public COSObjectSummary getObjectDetail(String prefix) {
|
| | | ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
|
| | | listObjectsRequest.setBucketName(totalBucketName);
|
| | | listObjectsRequest.setDelimiter("/");
|
| | | listObjectsRequest.setPrefix(prefix);
|
| | | listObjectsRequest.setMaxKeys(1);
|
| | | listObjectsRequest.setMarker(null);
|
| | | ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
|
| | | if (objectListing.getObjectSummaries() != null && objectListing.getObjectSummaries().size() > 0) {
|
| | | return objectListing.getObjectSummaries().get(0);
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | // 文件是否存在
|
| | | public boolean isFileExist(String url) {
|
| | | String key = url.replace(String.format("https://%s.file.myqcloud.com", totalBucketName), "");
|
| | | try {
|
| | | cosClient.getObjectMetadata(totalBucketName, key);
|
| | | return true;
|
| | | } catch (Exception e) {
|
| | | }
|
| | | return false;
|
| | | }
|
| | | // 文件是否存在
|
| | | public boolean isFileExist(String url) {
|
| | | String key = url.replace(String.format("https://%s.file.myqcloud.com", totalBucketName), "");
|
| | | try {
|
| | | cosClient.getObjectMetadata(totalBucketName, key);
|
| | | return true;
|
| | | } catch (Exception e) {
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | public boolean deleteFile(String url) {
|
| | | String key = url.replace(String.format("https://%s.file.myqcloud.com", totalBucketName), "");
|
| | | try {
|
| | | cosClient.deleteObject(totalBucketName, key);
|
| | | return true;
|
| | | } catch (Exception e) {
|
| | | }
|
| | | return false;
|
| | | }
|
| | | public boolean deleteFile(String url) {
|
| | | String key = url.replace(String.format("https://%s.file.myqcloud.com", totalBucketName), "");
|
| | | try {
|
| | | cosClient.deleteObject(totalBucketName, key);
|
| | | return true;
|
| | | } catch (Exception e) {
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | public static String getUploadVideoUrl(String name) {
|
| | | if (name != null && !name.startsWith("/"))
|
| | | name = "/" + name;
|
| | | return "https://gz.file.myqcloud.com/files/v2/" + appId + "/" + bucketName + name;
|
| | | }
|
| | | public static String getUploadVideoUrl(String name) {
|
| | | if (name != null && !name.startsWith("/"))
|
| | | name = "/" + name;
|
| | | return "https://gz.file.myqcloud.com/files/v2/" + appId + "/" + bucketName + name;
|
| | | }
|
| | |
|
| | | public static String getUploadVideoFileId(String name) {
|
| | | if (name != null && !name.startsWith("/"))
|
| | | name = "/" + name;
|
| | | return "/" + appId + "/" + bucketName + name;
|
| | | }
|
| | | public static String getUploadVideoFileId(String name) {
|
| | | if (name != null && !name.startsWith("/"))
|
| | | name = "/" + name;
|
| | | return "/" + appId + "/" + bucketName + name;
|
| | | }
|
| | |
|
| | | public static String getUploadVideoAuthorization() {
|
| | | long time = System.currentTimeMillis() / 1000;
|
| | | long expireTime = time + 60 * 20;// 20分钟的上传时间
|
| | | long random = (long) (1000000L * Math.random());
|
| | | String original = String.format("a=%s&b=%s&k=%s&e=%s&t=%s&r=%s&f=", appId + "", bucketName, secretId,
|
| | | (expireTime) + "", time + "", random + "");
|
| | | byte[] so = HmacUtils.hmacSha1(secretKey, original);
|
| | | byte[] or = original.getBytes();
|
| | | byte[] bts = ArrayUtils.addAll(so, or);
|
| | | String sign = StringUtil.getBase64FromByte(bts).replace("\n", "").replace("\r", "").trim();
|
| | | return sign;
|
| | | }
|
| | | public static String getUploadVideoAuthorization() {
|
| | | long time = System.currentTimeMillis() / 1000;
|
| | | long expireTime = time + 60 * 20;// 20分钟的上传时间
|
| | | long random = (long) (1000000L * Math.random());
|
| | | String original = String.format("a=%s&b=%s&k=%s&e=%s&t=%s&r=%s&f=", appId + "", bucketName, secretId,
|
| | | (expireTime) + "", time + "", random + "");
|
| | | byte[] so = HmacUtils.hmacSha1(secretKey, original);
|
| | | byte[] or = original.getBytes();
|
| | | byte[] bts = ArrayUtils.addAll(so, or);
|
| | | String sign = StringUtil.getBase64FromByte(bts).replace("\n", "").replace("\r", "").trim();
|
| | | return sign;
|
| | | }
|
| | |
|
| | | public FileUploadResult uploadFileByte(byte[] b, String key) {
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | String dir = FileUtil.getCacheDir();
|
| | | String tempPath = dir + "/temp_" + System.currentTimeMillis() + "_" + (long) (Math.random() * 100000000);
|
| | | try {
|
| | | public FileUploadResult uploadFileByte(byte[] b, String key) {
|
| | | if (key != null && !key.startsWith("/"))
|
| | | key = "/" + key;
|
| | | String dir = FileUtil.getCacheDir();
|
| | | String tempPath = dir + "/temp_" + System.currentTimeMillis() + "_" + (long) (Math.random() * 100000000);
|
| | | try {
|
| | |
|
| | | try {
|
| | | FileUtil.saveAsFileByte(b, tempPath);
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (new File(tempPath).exists()) {
|
| | | return uploadFile(new File(tempPath), key);
|
| | | }
|
| | | return null;
|
| | | } finally {
|
| | | if (new File(tempPath).exists())
|
| | | new File(tempPath).delete();
|
| | | }
|
| | | }
|
| | | try {
|
| | | FileUtil.saveAsFileByte(b, tempPath);
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (new File(tempPath).exists()) {
|
| | | return uploadFile(new File(tempPath), key);
|
| | | }
|
| | | return null;
|
| | | } finally {
|
| | | if (new File(tempPath).exists())
|
| | | new File(tempPath).delete();
|
| | | }
|
| | | }
|
| | | }
|