package com.java110.utils.util; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.OSSObjectSummary; import com.aliyun.oss.model.ObjectListing; import com.java110.utils.cache.MappingCache; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.List; public class OSSUtil { public static final String DOMAIN = "OSS"; public static final String OSS_SWITCH = "OSS_SWITCH"; public static final String OSS_SWITCH_OSS = "OSS"; public static final String ENDPOINT = "endpoint"; public static final String ACCESS_KEY_ID = "accessKeyId"; public static final String ACCESS_KEY_SECRET = "accessKeySecret"; /** * @return OSSClient oss客户端 * @throws * @Title: getOSSClient * @Description: 获取oss客户端 */ public static OSSClient getOSSClient() { String endpoint = MappingCache.getValue(DOMAIN, ENDPOINT); // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录https://ram.console.aliyun.com 创建RAM账号。 String accessKeyId = MappingCache.getValue(DOMAIN, ACCESS_KEY_ID); String accessKeySecret = MappingCache.getValue(DOMAIN, ACCESS_KEY_SECRET); OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); return ossClient; } /** * @param ossClient oss客户端 * @param url URL * @param bucketName bucket名称 * @param objectName 上传文件目录和(包括文件名)例如“test/index.html” * @return void 返回类型 * @throws * @Title: uploadByNetworkStream * @Description: 通过网络流上传文件 */ public static void uploadByNetworkStream(OSSClient ossClient, URL url, String bucketName, String objectName) { try { InputStream inputStream = url.openStream(); ossClient.putObject(bucketName, objectName, inputStream); ossClient.shutdown(); } catch (IOException e) { e.printStackTrace(); } finally { if (ossClient != null) { ossClient.shutdown(); } } } /** * @param ossClient oss客户端 * @param inputStream 输入流 * @param bucketName bucket名称 * @param objectName 上传文件目录和(包括文件名) 例如“test/a.jpg” * @return void 返回类型 * @throws * @Title: uploadByInputStream * @Description: 通过输入流上传文件 */ public static void uploadByInputStream(OSSClient ossClient, InputStream inputStream, String bucketName, String objectName) { try { ossClient.putObject(bucketName, objectName, inputStream); } catch (Exception e) { e.printStackTrace(); } finally { if (ossClient != null) { ossClient.shutdown(); } } } /** * @param ossClient oss客户端 * @param file 上传的文件 * @param bucketName bucket名称 * @param objectName 上传文件目录和(包括文件名) 例如“test/a.jpg” * @return void 返回类型 * @throws * @Title: uploadByFile * @Description: 通过file上传文件 */ public static void uploadByFile(OSSClient ossClient, File file, String bucketName, String objectName) { try { ossClient.putObject(bucketName, objectName, file); } catch (Exception e) { e.printStackTrace(); } finally { if (ossClient != null) { ossClient.shutdown(); } } } /** * @param ossClient oss客户端 * @param bucketName bucket名称 * @param key 文件路径/名称,例如“test/a.txt” * @return void 返回类型 * @throws * @Title: deleteFile * @Description: 根据key删除oss服务器上的文件 */ public static void deleteFile(OSSClient ossClient, String bucketName, String key) { ossClient.deleteObject(bucketName, key); } /** * @param ossClient oss客户端 * @param bucketName bucket名称 * @param key 文件路径和名称 * @return InputStream 文件输入流 * @throws * @Title: getInputStreamByOSS * @Description:根据key获取服务器上的文件的输入流 */ public static InputStream getInputStreamByOSS(OSSClient ossClient, String bucketName, String key) { InputStream content = null; try { OSSObject ossObj = ossClient.getObject(bucketName, key); content = ossObj.getObjectContent(); } catch (Exception e) { e.printStackTrace(); } return content; } /** * @param ossClient oss客户端 * @param bucketName bucket名称 * @return List 文件路径和大小集合 * @throws * @Title: queryAllObject * @Description: 查询某个bucket里面的所有文件 */ public static List queryAllObject(OSSClient ossClient, String bucketName) { List results = new ArrayList(); try { // ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。 ObjectListing objectListing = ossClient.listObjects(bucketName); // objectListing.getObjectSummaries获取所有文件的描述信息。 for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) { results.add(" - " + objectSummary.getKey() + " " + "(size = " + objectSummary.getSize() + ")"); } } catch (Exception e) { e.printStackTrace(); } finally { if (ossClient != null) { ossClient.shutdown(); } } return results; } }