阿里雲服務(一) OSS

阿里電子商務迄今是中國最大的電商網站,各個廠商都在去模仿。就像google大數據處理,Hadoop的思想等等,只有作出了一些成績,起了帶頭羊,那麼將會是很是吃香的。從今天開始簡單學習瞭解一下阿里的各類雲服務。今天先看一下OSShtml

         OSSOpen Storage Service)開放雲存儲服務,是阿里雲對外的提供的海量,安全和高可靠的雲存儲服務。目前阿里的全部雲服務都是收費,你們能夠到官網上了解:http://www.aliyun.com/product/ossjava

 

        OSS,通俗一點理解就像是一塊硬盤用來存儲東西呢,只不過,它是由不少服務器,經過相似負載均衡,raid等各類技術,搭建起來的雲存儲,相似咱們常常使用的百度雲盤,360雲盤等。咱們能夠將咱們服務,數據存放上去,方便,安全,實現雲。好了,簡單來講,OSS,既然是存儲東西用的,咱們就須要學會像相似IO流對電腦硬盤操做同樣,學習一下對OSS雲存儲的上傳,刪除等操做。web

 

         首先是開通OSS服務器後,會有endpoint,跟地址;accessKeyId,相似用戶名;accessKeySecret,相似密碼;buketName:第一層文件夾的名字,一個用戶能夠建立十個bucketName,相似於咱們的C,D,E,F盤符;accessUrl,很明顯用戶能夠經過瀏覽器訪問的地址。例如咱們上傳一個html文件,咱們就能夠經過"accessUrl/bucketName/目錄/文件名.html,來進行訪問。我在這裏負責一個是頁面靜態化的功能,將動態的JSP頁面生成靜態的html頁面,而後上傳的OSS服務器,返回地址,讓用戶直接訪問靜態頁面,這樣就大大加快訪問的速度。    這裏忽然想到一點不沾邊的話語「物極必反,否極泰來」,最開始是單純的靜態頁面,咱們一直追求動態頁面,如今又須要轉會到靜態頁面,各有各的好處,因此技術這東西,沒有一個好與很差,只是針對方面不一樣而已了。spring

 

 

           好,首先須要咱們建立一個OSS信息實體類,OSSConfigure.Java瀏覽器

 

 

  1. import java.io.IOException;  
  2. import java.util.Properties;  
  3.   
  4. public class OSSConfigure {  
  5.   
  6.     private String endpoint;  
  7.     private String accessKeyId;  
  8.     private String accessKeySecret;  
  9.     private String bucketName;  
  10.     private String accessUrl;  
  11.   
  12.     public OSSConfigure() {  
  13.   
  14.     }  
  15.   
  16.     /** 
  17.      * 經過配置文件.properties文件獲取,這幾項內容。 
  18.      *  
  19.      * @param storageConfName 
  20.      * @throws IOException 
  21.      */  
  22.     public OSSConfigure(String storageConfName) throws IOException {  
  23.   
  24.         Properties prop = new Properties();  
  25.         prop.load(this.getClass().getClassLoader()  
  26.                 .getResourceAsStream("conf/" + storageConfName));  
  27.   
  28.         endpoint = prop.getProperty("endpoint").trim();  
  29.         accessKeyId = prop.getProperty("accessKeyId").trim();  
  30.         accessKeySecret = prop.getProperty("accessKeySecret").trim();  
  31.         bucketName = prop.getProperty("bucketName").trim();  
  32.         accessUrl = prop.getProperty("accessUrl").trim();  
  33.   
  34.     }  
  35.   
  36.     public OSSConfigure(String endpoint, String accessKeyId,  
  37.             String accessKeySecret, String bucketName, String accessUrl) {  
  38.   
  39.         this.endpoint = endpoint;  
  40.         this.accessKeyId = accessKeyId;  
  41.         this.accessKeySecret = accessKeySecret;  
  42.         this.bucketName = bucketName;  
  43.         this.accessUrl = accessUrl;  
  44.     }  
  45.   
  46.     public String getEndpoint() {  
  47.         return endpoint;  
  48.     }  
  49.   
  50.     public void setEndpoint(String endpoint) {  
  51.         this.endpoint = endpoint;  
  52.     }  
  53.   
  54.     public String getAccessKeyId() {  
  55.         return accessKeyId;  
  56.     }  
  57.   
  58.     public void setAccessKeyId(String accessKeyId) {  
  59.         this.accessKeyId = accessKeyId;  
  60.     }  
  61.   
  62.     public String getAccessKeySecret() {  
  63.         return accessKeySecret;  
  64.     }  
  65.   
  66.     public void setAccessKeySecret(String accessKeySecret) {  
  67.         this.accessKeySecret = accessKeySecret;  
  68.     }  
  69.   
  70.     public String getBucketName() {  
  71.         return bucketName;  
  72.     }  
  73.   
  74.     public void setBucketName(String bucketName) {  
  75.         this.bucketName = bucketName;  
  76.     }  
  77.   
  78.     public String getAccessUrl() {  
  79.         return accessUrl;  
  80.     }  
  81.   
  82.     public void setAccessUrl(String accessUrl) {  
  83.         this.accessUrl = accessUrl;  
  84.     }  
  85.   
  86. }  

 

          而後是一個工具類,這裏須要提出的OSS服務器,上全部的都是對象,沒有文件夾的概念,上傳文件,直接寫好路勁,他會自動建立。另外這裏有一個入口OSSClient,不少方法都是經過它來實現的,相似於門面模式吧:安全


 

  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileNotFoundException;  
  4. import java.io.InputStream;  
  5.   
  6. import org.springframework.web.multipart.MultipartFile;  
  7.   
  8. import com.aliyun.oss.OSSClient;  
  9. import com.aliyun.oss.model.ObjectListing;  
  10. import com.aliyun.oss.model.ObjectMetadata;  
  11.   
  12. /** 
  13.  * 對OSS服務器進行上傳刪除等的處理 
  14. * @ClassName: OSSManageUtil  
  15. * @Description:   
  16. * @author liujh 
  17. * @date 2015-3-26 上午10:47:00  
  18.  */  
  19. public class OSSManageUtil {  
  20.     /** 
  21.      * 上傳OSS服務器文件 
  22.     * @Title: uploadFile  
  23.     * @Description:  
  24.     * @param @param ossConfigure 
  25.     * @param @param file 
  26.     * @param @param remotePath 
  27.     * @param @return 
  28.     * @param @throws Exception    設定文件  
  29.     * @return String    返回類型  
  30.     * @throws 
  31.      */  
  32.     public static String uploadFile(OSSConfigure ossConfigure,File file,String remotePath) throws Exception{  
  33.         InputStream fileContent=null;  
  34.         fileContent=new FileInputStream(file);  
  35.           
  36.         OSSClient ossClient=new OSSClient(ossConfigure.getEndpoint(), ossConfigure.getAccessKeyId(), ossConfigure.getAccessKeySecret());  
  37.          String remoteFilePath = remotePath.substring(0, remotePath.length()).replaceAll("\\\\","/")+"/";  
  38.         //建立上傳Object的Metadata  
  39.         ObjectMetadata objectMetadata=new ObjectMetadata();  
  40.         objectMetadata.setContentLength(fileContent.available());  
  41.         objectMetadata.setCacheControl("no-cache");  
  42.         objectMetadata.setHeader("Pragma", "no-cache");  
  43.         objectMetadata.setContentType(contentType(file.getName().substring(file.getName().lastIndexOf("."))));  
  44.         objectMetadata.setContentDisposition("inline;filename=" + file.getName());  
  45.         //上傳文件  
  46.         ossClient.putObject(ossConfigure.getBucketName(), remoteFilePath + file.getName(), fileContent, objectMetadata);  
  47.         System.out.println(ossConfigure.getAccessUrl()+"/" +remoteFilePath + file.getName());  
  48.         return ossConfigure.getAccessUrl()+"/" +remoteFilePath + file.getName();  
  49.     }  
  50.       
  51.       
  52.     /** 
  53.      * 根據key刪除OSS服務器上的文件 
  54.     * @Title: deleteFile  
  55.     * @Description:  
  56.     * @param @param ossConfigure 
  57.     * @param @param filePath    設定文件  
  58.     * @return void    返回類型  
  59.     * @throws 
  60.      */  
  61.     public static void deleteFile(OSSConfigure ossConfigure,String filePath){  
  62.         OSSClient ossClient = new OSSClient(ossConfigure.getEndpoint(),ossConfigure.getAccessKeyId(), ossConfigure.getAccessKeySecret());  
  63.         ossClient.deleteObject(ossConfigure.getBucketName(), filePath);  
  64.           
  65.     }  
  66.       
  67.      /** 
  68.      * Description: 判斷OSS服務文件上傳時文件的contentType 
  69.      * @Version1.0 
  70.      * @param FilenameExtension 文件後綴 
  71.      * @return String  
  72.      */  
  73.      public static String contentType(String FilenameExtension){  
  74.         if(FilenameExtension.equals("BMP")||FilenameExtension.equals("bmp")){return "image/bmp";}  
  75.         if(FilenameExtension.equals("GIF")||FilenameExtension.equals("gif")){return "image/gif";}  
  76.         if(FilenameExtension.equals("JPEG")||FilenameExtension.equals("jpeg")||  
  77.            FilenameExtension.equals("JPG")||FilenameExtension.equals("jpg")||     
  78.            FilenameExtension.equals("PNG")||FilenameExtension.equals("png")){return "image/jpeg";}  
  79.         if(FilenameExtension.equals("HTML")||FilenameExtension.equals("html")){return "text/html";}  
  80.         if(FilenameExtension.equals("TXT")||FilenameExtension.equals("txt")){return "text/plain";}  
  81.         if(FilenameExtension.equals("VSD")||FilenameExtension.equals("vsd")){return "application/vnd.visio";}  
  82.         if(FilenameExtension.equals("PPTX")||FilenameExtension.equals("pptx")||  
  83.             FilenameExtension.equals("PPT")||FilenameExtension.equals("ppt")){return "application/vnd.ms-powerpoint";}  
  84.         if(FilenameExtension.equals("DOCX")||FilenameExtension.equals("docx")||  
  85.             FilenameExtension.equals("DOC")||FilenameExtension.equals("doc")){return "application/msword";}  
  86.         if(FilenameExtension.equals("XML")||FilenameExtension.equals("xml")){return "text/xml";}  
  87.         return "text/html";  
  88.      }  
  89. }  


        固然這裏僅僅寫了兩個通用方法,咱們能夠在官網上下載對應的API,來進行查詢學習,其實挺簡單的。服務器

相關文章
相關標籤/搜索