java-百度bos下載檔案
阿新 • • 發佈:2018-12-14
最近有個需求就是使用百度bos上傳檔案和檔案的打包下載功能,查了好多資料都沒有人分享的,自己寫一篇以供以後參考。
//這個地方是獲取bos的相關資訊比如AK、SK以及BaiduBosBucketName等資訊 //獲取到相應的資訊之後封裝獲取一個BosClient物件 String ACCESS_KEY_ID = jSONObject.getString("BaiduBosAccessKey"); // 使用者的Access String SECRET_ACCESS_KEY = jSONObject.getString("BaiduBosSecretKey"); // 使用者的Secret String bucketName = jSONObject.getString("BaiduBosBucketName"); BosClientConfiguration config = new BosClientConfiguration(); config.setEndpoint(point); // Bucket所在區域 config.setCredentials(new DefaultBceCredentials(ACCESS_KEY_ID, SECRET_ACCESS_KEY)); BosClient client = new BosClient(config);
在獲取到BosClient這個物件之後我的業務是將檔案打包成zip包所以之後要獲取檔案列表進行打包
for (SurveyAndroid s : surveyAndroids) {
String urlName = s.getFilesName();
String fileName = urlName.replace("dap/", "");
//上面獲取到檔名稱之後進行打包
FileUtils.getObject(client, bucketName, fileName, zipOut);
}
下面是獲取檔案打包的具體程式碼
/** * 百度雲下載到zip中 * @param client * @param bucketName * @param objectKey * @param zipOut * @throws IOException */ public static void getObject(BosClient client, String bucketName, String objectKey, ZipOutputStream zipOut) throws IOException { // 獲取Object,返回結果為BosObject物件 BosObject object = client.getObject(bucketName, objectKey); // 獲取Object的輸入流 InputStream objectContent = object.getObjectContent(); zipOut.putNextEntry(new ZipEntry(objectKey)); byte[] buffer = new byte[1024]; int r = 0; while ((r = objectContent.read(buffer)) != -1) { zipOut.write(buffer, 0, r); } objectContent.close(); }
目前使用官方的獲取資料夾下的檔案列表一直獲取不到,所以只能用 迴圈獲取的方法實現了。希望大神能提供好的方法。