七牛云資源上傳、刪除、分頁、批量操作工具類
package cn.ming.utils; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import com.qiniu.storage.BucketManager; import com.qiniu.storage.Configuration; import com.qiniu.storage.Region; import com.qiniu.storage.UploadManager; import com.qiniu.storage.model.BatchStatus; import com.qiniu.storage.model.FileListing; import com.qiniu.util.Auth; import java.io.InputStream; /** * @description: 七牛工具類 * @author: Mr.Fang * @create: 2022-05-01 09:15 */ public class QiNiuUtils { // key 控制臺查看 private static String accessKey = "你的key"; // key // secret 秘鑰 private static String secretKey = "你的secret"; // 秘鑰 // 空間 private static String bucket = "你的空間"; /** * 地區: * 華東 Region.region0(), Region.huadong() * 華北 Region.region1(), Region.huabei() * 華南 Region.region2(), Region.huanan() * 北美 Region.regionNa0(), Region.beimei() * 東南亞 Region.regionAs0(), Region.xinjiapo() */ //構造一個帶指定 Region 對象的配置類 private static Configuration cfg = new Configuration(Region.region2()); private static String upToken = ""; private static Auth auth = null; static { auth = Auth.create(accessKey, secretKey); upToken = auth.uploadToken(bucket); } /** * create by: Mr.Fang * description: 本地上傳文件 * create time: 2022/5/1 9:22 * * @return java.lang.String 返回 JSON 字符串響應結果:[{"hash":"FsTuB-z8xNrghfYYF8HD8z4RsG5b","key":"FsTuB-z8xNrghfYYF8HD8z4RsG5b"}] * @Param: localFilePath 文件路徑 * @Param: key 默認不指定key的情況下,以文件內容的hash值作為文件名 */ public static String upload(String localFilePath, String key) { UploadManager uploadManager = new UploadManager(cfg); Response response = null; try { response = uploadManager.put(localFilePath, key, upToken); String bodyString = response.bodyString(); // 響應結果 printResult(response); return bodyString; } catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); try { System.err.println(r.bodyString()); } catch (QiniuException ex2) { ex2.printStackTrace(); } } return null; } /** * create by: Mr.Fang * description: 字節數組上傳 * create time: 2022/5/1 9:22 * * @return java.lang.String 返回 JSON 字符串響應結果:[{"hash":"FsTuB-z8xNrghfYYF8HD8z4RsG5b","key":"FsTuB-z8xNrghfYYF8HD8z4RsG5b"}] * @Param: bytes 字節數組 * @Param: key 默認不指定 key 的情況下,以文件內容的 hash 值作為文件名 */ public static String upload(byte[] bytes, String key) { UploadManager uploadManager = new UploadManager(cfg); Response response = null; try { response = uploadManager.put(bytes, key, upToken); String bodyString = response.bodyString(); // 響應結果 printResult(response); return bodyString; } catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); try { System.err.println(r.bodyString()); } catch (QiniuException ex2) { ex2.printStackTrace(); } } return null; } /** * create by: Mr.Fang * description: 字節數組上傳 * create time: 2022/5/1 9:22 * * @return java.lang.String 返回 JSON 字符串響應結果:[{"hash":"FsTuB-z8xNrghfYYF8HD8z4RsG5b","key":"FsTuB-z8xNrghfYYF8HD8z4RsG5b"}] * @Param: is 輸入流 * @Param: key 默認不指定 key 的情況下,以文件內容的 hash 值作為文件名 */ public static String upload(InputStream is, String key) { UploadManager uploadManager = new UploadManager(cfg); Response response = null; try { response = uploadManager.put(is, key, upToken, null, null); String bodyString = response.bodyString(); // 響應結果 printResult(response); return bodyString; } catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); try { System.err.println(r.bodyString()); } catch (QiniuException ex2) { ex2.printStackTrace(); } } return null; } /** * create by: Mr.Fang * description: 刪除服務器文件 * create time: 2022/5/1 9:39 * * @return int 返回狀態碼 200 就 ok * @Param: key 七牛的key */ public static int delete(String key) { BucketManager bucketManager = new BucketManager(auth, cfg); try { bucketManager.delete(bucket, key); Response response = bucketManager.bucketsResponse(); int statusCode = response.statusCode; // 狀態碼 printResult(response); return statusCode; } catch (QiniuException ex) { System.err.println(ex.response.toString()); } return 0; } /** * create by: Mr.Fang * description: 刪除服務器文件,指定過期時間,以天為單位 * create time: 2022/5/1 9:45 * * @return int 返回狀態碼 200 就 ok * @Param: key 七牛的key * @Param: days 啥時候刪除 */ public static int delete(String key, int days) { BucketManager bucketManager = new BucketManager(auth, cfg); try { bucketManager.deleteAfterDays(bucket, key, days); Response response = bucketManager.bucketsResponse(); int statusCode = response.statusCode; // 狀態碼 printResult(response); return statusCode; } catch (QiniuException ex) { ex.printStackTrace(); System.err.println(ex.response.toString()); } return 0; } /** * create by: Mr.Fang * description: 批量刪除 * create time: 2022/5/1 15:42 * * @return int * @Param: keys 多個 key */ public static BatchStatus[] batchDelete(String... keys) { BucketManager bucketManager = new BucketManager(auth, cfg); BucketManager.BatchOperations batchOperations = new BucketManager.BatchOperations(); batchOperations.addDeleteOp(bucket, keys); try { Response response = bucketManager.batch(batchOperations); BatchStatus[] batchStatusList = response.jsonToObject(BatchStatus[].class); return batchStatusList; } catch (QiniuException e) { e.printStackTrace(); } return null; } /** * create by: Mr.Fang * description: 獲取資源列表, * * @return java.lang.String 字符串響應結果: * @Param: prefix 文件名前綴 * @Param: marker 位置標記這個參數是七牛返回的,下次攜帶這個參數訪問就可以實現分頁了,如果沒有返回這個參數表示,總記錄不滿足分頁條件,或最后一頁了 * @Param: limit 每次迭代的長度限制,最大1000,推薦值 1000 * @Param: delimiter 指定目錄分隔符,列出所有公共前綴(模擬列出目錄效果)。缺省值為空字符串 * @Time time: 2022/5/1 9:52 * @see 字段含義這里 https://developer.qiniu.com/kodo/1284/list */ public static FileListing listPage(String prefix, String marker, int limit, String delimiter) { BucketManager bucketManager = new BucketManager(auth, cfg); try { // FIXME: 2022/5/1 返回JSON格式 自己處理 // Response response = bucketManager.listV2(bucket, prefix, marker, limit, delimiter); // String bodyString = response.bodyString(); // 響應結果 // printResult(response); // return bodyString; // FIXME: 2022/5/1 返回 牛牛封裝的文件對象 FileListing fileListing = bucketManager.listFiles(bucket, prefix, marker, limit, delimiter); return fileListing; } catch (QiniuException e) { e.printStackTrace(); } return null; } /** * create by: Mr.Fang * description: 輸出響應結果 * create time: 2022/5/1 9:41 * * @return void * @Param: response */ public static void printResult(Response response) { System.out.println(String.format("狀態碼:[%d]", response.statusCode)); // 狀態碼:[200] System.out.println(String.format("耗時:[%f]", response.duration)); // 耗時:[0.366000] 單位毫秒 try { System.out.println(String.format("響應結果:[%s]", response.bodyString())); // 響應結果:[["32123","222"]] } catch (QiniuException e) { e.printStackTrace(); } } }
pom.xml
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.14.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.qiniu</groupId> <artifactId>happy-dns-java</artifactId> <version>0.1.6</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.7.0, 7.10.99]</version> </dependency>
哇!又賺了一天人民幣

浙公網安備 33010602011771號