java操作阿里雲的物件儲存OSS
以下部落格簡單介紹連線阿里雲的OSS,新建Bucket,刪除Bucket,向阿里雲的OSS儲存中儲存單個檔案,獲取單個檔案,刪除單個檔案等功能。
以下為pom依賴:
<!-- aliyun oss -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.2.1</version>
</dependency>
下載地址:
下邊為oss的配置檔案oss.properties,也可以直接寫入程式碼:
endpoint=oss-cn-beijing.aliyuncs.com
accessKeyId=您的key
accessKeySecret=您的secret
注endpoint為:OSS外網域名或OSS內網域名去掉您的Bucket.後
OSS的操作程式碼:
package my.demo.java.z.aliyun.oss; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.Bucket; import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectResult; public class OSSUnit { //log private static final Logger LOG = LoggerFactory.getLogger(OSSUnit.class); //阿里雲API的內或外網域名 private static String ENDPOINT; //阿里雲API的金鑰Access Key ID private static String ACCESS_KEY_ID; //阿里雲API的金鑰Access Key Secret private static String ACCESS_KEY_SECRET; //init static datas static{ ResourceBundle bundle = PropertyResourceBundle.getBundle("properties.oss"); ENDPOINT = bundle.containsKey("endpoint") == false ? "" : bundle.getString("endpoint"); ACCESS_KEY_ID = bundle.containsKey("accessKeyId") == false? "" : bundle.getString("accessKeyId"); ACCESS_KEY_SECRET = bundle.containsKey("accessKeySecret") == false ? "" : bundle.getString("accessKeySecret"); } /** * 獲取阿里雲OSS客戶端物件 * */ public static final OSSClient getOSSClient(){ return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET); } /** * 新建Bucket --Bucket許可權:私有 * @param bucketName bucket名稱 * @return true 新建Bucket成功 * */ public static final boolean createBucket(OSSClient client, String bucketName){ Bucket bucket = client.createBucket(bucketName); return bucketName.equals(bucket.getName()); } /** * 刪除Bucket * @param bucketName bucket名稱 * */ public static final void deleteBucket(OSSClient client, String bucketName){ client.deleteBucket(bucketName); LOG.info("刪除" + bucketName + "Bucket成功"); } /** * 向阿里雲的OSS儲存中儲存檔案 --file也可以用InputStream替代 * @param client OSS客戶端 * @param file 上傳檔案 * @param bucketName bucket名稱 * @param diskName 上傳檔案的目錄 --bucket下檔案的路徑 * @return String 唯一MD5數字簽名 * */ public static final String uploadObject2OSS(OSSClient client, File file, String bucketName, String diskName) { String resultStr = null; try { InputStream is = new FileInputStream(file); String fileName = file.getName(); Long fileSize = file.length(); //建立上傳Object的Metadata ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(is.available()); metadata.setCacheControl("no-cache"); metadata.setHeader("Pragma", "no-cache"); metadata.setContentEncoding("utf-8"); metadata.setContentType(getContentType(fileName)); metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte."); //上傳檔案 PutObjectResult putResult = client.putObject(bucketName, diskName + fileName, is, metadata); //解析結果 resultStr = putResult.getETag(); } catch (Exception e) { LOG.error("上傳阿里雲OSS伺服器異常." + e.getMessage(), e); } return resultStr; } /** * 根據key獲取OSS伺服器上的檔案輸入流 * @param client OSS客戶端 * @param bucketName bucket名稱 * @param diskName 檔案路徑 * @param key Bucket下的檔案的路徑名+檔名 */ public static final InputStream getOSS2InputStream(OSSClient client, String bucketName, String diskName, String key){ OSSObject ossObj = client.getObject(bucketName, diskName + key); return ossObj.getObjectContent(); } /** * 根據key刪除OSS伺服器上的檔案 * @param client OSS客戶端 * @param bucketName bucket名稱 * @param diskName 檔案路徑 * @param key Bucket下的檔案的路徑名+檔名 */ public static void deleteFile(OSSClient client, String bucketName, String diskName, String key){ client.deleteObject(bucketName, diskName + key); LOG.info("刪除" + bucketName + "下的檔案" + diskName + key + "成功"); } /** * 通過檔名判斷並獲取OSS服務檔案上傳時檔案的contentType * @param fileName 檔名 * @return 檔案的contentType */ public static final String getContentType(String fileName){ String fileExtension = fileName.substring(fileName.lastIndexOf(".")); if("bmp".equalsIgnoreCase(fileExtension)) return "image/bmp"; if("gif".equalsIgnoreCase(fileExtension)) return "image/gif"; if("jpeg".equalsIgnoreCase(fileExtension) || "jpg".equalsIgnoreCase(fileExtension) || "png".equalsIgnoreCase(fileExtension) ) return "image/jpeg"; if("html".equalsIgnoreCase(fileExtension)) return "text/html"; if("txt".equalsIgnoreCase(fileExtension)) return "text/plain"; if("vsd".equalsIgnoreCase(fileExtension)) return "application/vnd.visio"; if("ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) return "application/vnd.ms-powerpoint"; if("doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) return "application/msword"; if("xml".equalsIgnoreCase(fileExtension)) return "text/xml"; return "text/html"; } }
程式碼對應測試程式碼junit如下:
部分效果圖:package my.demo.java.z.aliyun.oss; import static org.junit.Assert.assertEquals; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.aliyun.oss.OSSClient; public class OSSUnitTest { //log private static final Logger LOG = LoggerFactory.getLogger(OSSUnitTest.class); private OSSUnit ossunit = null; private OSSClient client = null; private String bucketName = "oss-test-my"; @Before public void initUnit(){ ossunit = new OSSUnit(); client = OSSUnit.getOSSClient(); } @Test public void testCreateBucket() { String bucketName = "oss-test-my"; //建立bucket assertEquals(true, OSSUnit.createBucket(client, bucketName)); } @Test public void testDeleteBucket(){ String bucketName = "oss-test-my"; //刪除bucket OSSUnit.deleteBucket(client, bucketName); //console log :刪除oss-test-myBucket成功 } @Test public void testUploadObject2OSS(){ //上傳檔案 String flilePathName = "C:/Users/Tony_tian/Desktop/csdnimg/preossimg.jpg"; File file = new File(flilePathName); String diskName = "datas/image/"; String md5key = OSSUnit.uploadObject2OSS(client, file, bucketName, diskName); LOG.info("上傳後的檔案MD5數字唯一簽名:" + md5key); //上傳後的檔案MD5數字唯一簽名:A30B046A34EB326C4A3BBD784333B017 } @Test public void testGetOSS2InputStream(){ //獲取檔案 try { BufferedInputStream bis = new BufferedInputStream(OSSUnit.getOSS2InputStream(client, bucketName, "datas/image/", "preossimg.jpg")); String resfile = "C:/Users/Tony_tian/Desktop/csdnimg/preossimg_res.jpg"; BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(resfile))); int itemp = 0; while((itemp = bis.read()) != -1){ bos.write(itemp); } LOG.info("檔案獲取成功"); //console log :檔案獲取成功 bis.close(); bos.close(); } catch (Exception e) { LOG.error("從OSS獲取檔案失敗:" + e.getMessage(), e); } } @Test public void testDeleteFile(){ //注:資料夾下只有一個檔案,則資料夾也會一起刪除;如果多個檔案,只會刪除指定檔名的檔案 //刪除檔案 OSSUnit.deleteFile(client, bucketName, "datas/image/", "preossimg.jpg"); //console log : 刪除oss-test-my下的檔案datas/image/preossimg.jpg成功 } }
新建Bucket(Bucket許可權:私有,公開需手動設定)前後和刪除Bucket:
上傳檔案前後即刪除檔案:
注:資料夾下只有一個檔案,則資料夾也會一起刪除;如果多個檔案,只會刪除指定檔名的檔案
上邊記錄為私有檔案的獲取,如果要獲取“Bucket許可權:公共讀”的就很簡單了:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Aliyun-OSS</title>
<meta name="keywords" content="Aliyun-OSS"/>
<meta name="description" content="Aliyun-OSS" />
<!-- <link rel="stylesheet" href="${serverprc }/static/css/common.css" />
<script type="text/javascript" src="${serverprc }/static/js/common.js" charset="utf-8"></script> -->
</head>
<body>
<div>
Bucket許可權:公共讀的圖片:<img src="http://tsxs-datas.oss-cn-beijing.aliyuncs.com/image/public/tsxs_title_logo.ico"/>
</div>
</body>
</html>
開啟效果:
相關推薦
阿里雲-物件儲存OSS
文件地址 https://help.aliyun.com/document_detail/32099.html?spm=a2c4g.11186623.6.766.74cdc839H0RSId 安裝(此處為composer安裝) 1、PHP 5.3+ 2、擴
阿里雲物件儲存OSS使用記錄: 如何把oss中Bucket的檔案URL連線設定成永久有效
一、OSS本身的許可權控制 1.許可權型別 Bucket目前有三種訪問許可權:public-read-write,public-read和private; 2.許可權設定與獲取 通過控制檯設定Bucket級別和object級別的操作; 控制檯: Bucket:
阿里雲物件儲存OSS之通過URL形式進行圖片處理
文章目錄 1. 什麼是OSS 2. OSS圖片服務 3. 圖片處理訪問規則 4. 通過URL的形式 5. 多個action之間組合形式 5.1 示例 5.2 圖片旋轉 5.3 圖片裁剪
阿里雲物件儲存OSS--實現隨時隨地上傳檔案到阿里雲
需求背景:消費者多批次回饋我司生產的車載智慧後視鏡出現宕機、連不上伺服器等問題,因產品已經出到全國各地不方便去取異常log,也不可能要求消費者把log傳給我們分析。 需求目標:公司內部實現遠端後臺上傳問題機型的log。 必備條件:後視鏡有SIM卡且能夠聯網(
乾貨 | 基於Go SDK操作京東雲物件儲存OSS的入門指南
前言 本文介紹如何使用Go語言對京東雲物件儲存OSS進行基本的操作,幫助客戶快速通過G
java操作阿里雲的物件儲存OSS
以下部落格簡單介紹連線阿里雲的OSS,新建Bucket,刪除Bucket,向阿里雲的OSS儲存中儲存單個檔案,獲取單個檔案,刪除單個檔案等功能。 以下為pom依賴: <!-- aliyun oss --> <dependency>
react使用阿里雲物件儲存,ali-oss, antd upload to ali-oss
最近寫阿里雲圖片上傳,碰到一些小問題,在此總結一下. 專案環境: create-react-app antd node6.1.0 看了阿里雲oss物件儲存sdk 直接採用node 的安裝方式. 在使用的時候碰到了問題. yield client.put('file',
阿里雲物件儲存(OSS)使用小結
本文為使用OSS物件儲存小結,無廣告之嫌。 一.建立javaOSS上傳工具類 需要匯入的jar包在網站有,需要注意的是,httpclient.jar和httpcore.jar的版本需要保持一致,不然會上傳出錯。slf4j.jar 系列的也需要保持一致,上程式碼。 i
阿里雲物件儲存服務,OSS使用經驗總結,圖片儲存,分頁查詢
阿里雲OSS-使用經驗總結,儲存,賬號-許可權,分頁,縮圖,賬號切換最近專案中,需要使用雲端儲存,最後選擇了阿里雲-物件儲存服務OSS。總的來說,比較簡單,但是仍然遇到了幾個問題,需要總結下。1.OSS總的使用介紹 https://help.aliyun.com/docum
OSS阿里雲物件儲存服務前端JS下載日誌檔案
function downurl(path) { var client = new OSS({ region: '地區', accessKeyId: 'accessKeyId', accessKeySecret: 'accessKeySecret', bucket: '域
通過雲端儲存閘道器實現阿里雲物件儲存跨地域訪問
某客戶在阿里雲的上海地域內有一臺位於VPC內部的ECS,想訪問同一阿里雲賬號下位於北京地域的一個OSS Bucket裡面的資料,同時又希望走阿里雲的內網流量以享受內網的頻寬。因為北京上海屬於不同的地域,所以如果使用ossutil或者ossfs這樣的工具進行Bucket裡面的檔案的直接訪問,只能
Java使用阿里雲OSS物件儲存上傳圖片
開發環境: 開發工具:eclipse4.4+jdk7 均64位 OSS Java SDK依賴下列包: aliyun-sdk-oss-2.2.1.jar hamcrest-core-1.1.jar jdom-1.1.jar commons-codec-1.9.jar
阿里雲 javascript上傳檔案(圖片、視訊、壓縮包等檔案)到 物件儲存 OSS ,返回上傳檔案、圖片、音訊、視訊等URL路徑
目的:前端上傳檔案(圖片、視訊、音訊等)到阿里雲伺服器裡面,並且獲得上傳檔案的URL路徑 前提:首先要買一個阿里雲伺服器,自己百度不會; 第一步:登入阿里雲賬號,點選管理控制檯-->物件儲存 OSS 第二步:新建儲存空間(圖一、圖二) (圖一) (圖二
【上傳檔案】基於阿里雲的視訊點播VOD、物件儲存OSS實現音視訊圖片等檔案上傳
一、效果演示 a.測試介面初始化 b.點選【上傳視訊】 c.點選【開始上傳】 d.點選【上傳音訊】選擇音訊之後點選【開始上傳】 c.點選【上傳圖片】,注意圖片上傳為單按鈕,選擇檔案之後自動完成上傳 d.點選【確定】來獲取以上幾個上傳檔案成功之後
使用java開發阿里雲OSS開放雲端儲存服務
購買了阿里雲後,我們發現一般ECS的儲存空間都比較小,當然我們可以動態的擴充套件一些儲存空間。但是作為開發者,我們在日常使用中需要一些更大的靈活性,因此就需要我們自己對OSS儲存有一些自己的擴充套件。今天就為大家分享一下如何使用java來對接阿里雲的OSS儲存服務。OSS產品
阿里雲產品物件儲存oss概述,有什麼優勢
阿里雲的產品種類繁多,今天讓我們一起來了解下物件儲存(Object Storage Service,簡稱OSS)吧! 詳情介紹:阿里雲物件儲存oss價格及產品詳情頁 什麼是物件儲存呢? 簡單來說,物件儲存OSS是阿里雲提供的海量、安全和高可靠的雲端儲存服務。儲存容量和處理能力的彈
thinkPHP實現物件儲存oss,將圖片上傳到阿里雲oss
演示效果和下載地址:http://www.erdangjiade.com/js/1021.html 可以在阿里雲網站下載oss的demo原始碼PHP版:v2.0.5 https://help.aliyun.com/document_detail/32174.html?sp
How To: 阿里雲的物件儲存OSS服務的使用.
網上的雲端儲存服務有很多, 百度雲盤,360雲盤,等等,但是他們都不開放API, 使用的時候,有很大的侷限性. 昨天嘗試了一下阿里雲的OSS,感覺不錯,速度也挺快的.給力. 這篇文章就是一個簡單的guide, 所有的內容都可以從官方查出來, 我只不過是根據自己的操作順序,把
第八彈——阿里雲物件雲端儲存OSS
筆者也是剛剛接觸這種新東西,研究了一會搞懂了它的簡單的用法,我主要把一些圖片存在上面,通過外網連線供我的網頁呼叫,這樣直接省了一部分頻寬,額,我感覺有些用叉了,有點當成CDN的感覺………… 不說了,先來看看阿里雲官方的介紹: 阿里雲物件儲存服務(Obj
阿里雲伺服器 雲物件儲存OOS(二) ---圖片上傳與讀取demo
上一篇講解了無需程式碼操作的阿里OOS雲物件儲存 http://blog.csdn.net/u014520797/article/details/53945912 1、SDK下載,不下載也可以,文章最後有demo,demo裡面有jar包 https://help.aliyun.com/d