1. 程式人生 > >阿里雲oss上傳本地檔案到伺服器例項

阿里雲oss上傳本地檔案到伺服器例項

Java 專案開發中阿里雲 oss上傳本地到伺服器以及下載功能實現例項。

AliyunOSSUtil類:

public class AliyunOSSUtil {

/**
 * 該示例程式碼展示瞭如果在OSS中建立和刪除一個Bucket,以及如何上傳和下載一個檔案。
 * 
 * 該示例程式碼的執行過程是:
 * 1. 建立一個Bucket(如果已經存在,則忽略錯誤碼);
 * 2. 上傳一個檔案到OSS;
 * 3. 下載這個檔案到本地;
 * 4. 清理測試資源:刪除Bucket及其中的所有Objects。
 * 
 * 嘗試執行這段示例程式碼時需要注意:
 * 1. 為了展示在刪除Bucket時除了需要刪除其中的Objects,
 *    示例程式碼最後為刪除掉指定的Bucket,因為不要使用您的已經有資源的Bucket進行測試!
 * 2. 請使用您的API授權金鑰填充ACCESS_ID和ACCESS_KEY常量;
 * 3. 需要準確上傳用的測試檔案,並修改常量uploadFilePath為測試檔案的路徑;
 *    修改常量downloadFilePath為下載檔案的路徑。
 * 4. 該程式僅為示例程式碼,僅供參考,並不能保證足夠健壯。
 *
 */

    private static final String ACCESS_ID = "cvj2e9aH*****";
    private static final String ACCESS_KEY = "KFdm4MeaT******";
    private static final String endPoint = "http://oss-cn-beijing.aliyuncs.com";
    private static final String bucketName = "x******";
	
    // 設定URL過期時間為1天
    private static final Date expiration = new Date(new Date().getTime() + 3600 * 1000 * 24);
    //在自己內部定義自己的一個 例項,只供內部呼叫
    private static final OSSClient client = new OSSClient(endPoint, ACCESS_ID, ACCESS_KEY);
    
    private AliyunOSSUtil(){
        //do something
    }
    //單例模式
    //獲得客戶端
    public static OSSClient getOSSClient(){
        return client;
    }
    
    //建立一個Bucket
    public static void ensureBucket()throws OSSException, ClientException{
        try {
            // 建立bucket, 判斷bucket是否存在
        	boolean exists = client.doesBucketExist(bucketName);
        	if(!exists){
        		client.createBucket(bucketName);
        	}else{
        		
        	}
        } catch (ServiceException e) {
            System.out.println(e.getErrorCode() + "  " + e.getErrorMessage());
                throw e;
        }
    }
		
    // 獲取指定bucket下的所有Object資訊
    public void getObjects(OSSClient client,String bucketName){
        ObjectListing listing = client.listObjects(bucketName);
        // 遍歷所有Object
        for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
            System.out.println(objectSummary.getKey());
        }      
    }
    
    // 刪除一個Bucket和其中的Objects 
    public static void deleteBucket(OSSClient client, String bucketName)
            throws OSSException, ClientException {

        ObjectListing ObjectListing = client.listObjects(bucketName);
        List<OSSObjectSummary> listDeletes = ObjectListing.getObjectSummaries();
        for (int i = 0; i < listDeletes.size(); i++) {
            String objectName = listDeletes.get(i).getKey();
            // 如果不為空,先刪除bucket下的檔案
            client.deleteObject(bucketName, objectName);
        }
        client.deleteBucket(bucketName);
    }

    // 把Bucket設定為所有人可讀
    public static void setBucketPublicReadable(OSSClient client, String bucketName)
            throws OSSException, ClientException {
        //建立bucket
        client.createBucket(bucketName);

        //設定bucket的訪問許可權,public-read-write許可權
        client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
    }

    // 上傳檔案 file
    public static void uploadFile(String key, File file) throws OSSException, ClientException, FileNotFoundException {
	// 獲取指定檔案的輸入流
	InputStream content = new FileInputStream(file);
	// 建立上傳Object的Metadata
<span style="white-space:pre">	</span> ObjectMetadata meta = new ObjectMetadata();
	 // 必須設定ContentLength
	 meta.setContentLength(file.length());
         meta.setContentType("image/*");
	 client.putObject(bucketName, key, content, meta);
    }	 
    
    // 上傳檔案 MultipartFile multipartFile
    public static void uploadMultipartFile(String key, MultipartFile multipartFile) throws OSSException, ClientException, FileNotFoundException {

		 try {
			// 獲取指定檔案的輸入流
			 InputStream content = multipartFile.getInputStream();
			 // 建立上傳Object的Metadata
			 ObjectMetadata meta = new ObjectMetadata();
			 // 必須設定ContentLength
			 meta.setContentLength(multipartFile.getSize() );
			 meta.setContentType("image/*");
			 client.putObject(bucketName, key, content, meta);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }	 
    
    //生成URL
    public static URL getUrl(String key){
    	URL url = client.generatePresignedUrl(bucketName, key, expiration);
    	return url;
    }
    // 下載檔案
    public static void downloadFile(OSSClient client, String bucketName, String key, String fileDownloadPath)
            throws OSSException, ClientException {
        client.getObject(new GetObjectRequest(bucketName, key), new File(fileDownloadPath));
    }
    
  //建立Bucket 裡的虛擬資料夾
  	public static void createFileDir(String dir)throws OSSException, ClientException{
  		ensureBucket();
  		try {
  			client.getObject(bucketName, dir);
  		} catch (ServiceException e) {
  			// TODO Auto-generated catch block
  			if(e.getErrorCode().equals("NoSuchKey")){
  				//要建立的資料夾名稱,在滿足Object命名規則的情況下以"/"結尾
  				  String objectName = dir + "/";
  				  ObjectMetadata objectMeta = new ObjectMetadata();
  				  
  				  /*這裡的size為0,注意OSS本身沒有資料夾的概念,這裡建立的資料夾本質上是一個size為0的Object,dataStream仍然可以有資料   */
  				  byte[] buffer = new byte[0];
  				  ByteArrayInputStream in = new ByteArrayInputStream(buffer);
  				  objectMeta.setContentLength(0);
  				  try {
  					  //建立檔案上傳目錄
  					  client.putObject(bucketName, objectName, in, objectMeta);
  				  }catch(ServiceException se){
  					  System.out.println(se.getErrorCode() + "  " + se.getErrorMessage());
  					  throw e;
  				  }
  				  finally {
  					  try {
  						  in.close();
  					  } catch (IOException ioe) {
  						  // TODO Auto-generated catch block
  						  ioe.printStackTrace();
  					  }
  				  }
  			}
  			
  		}
  		   
      }
    
}


相關推薦

阿里oss本地檔案伺服器例項

Java 專案開發中阿里雲 oss上傳本地到伺服器以及下載功能實現例項。 AliyunOSSUtil類: public class AliyunOSSUtil { /** * 該示例程式碼展示瞭如果在OSS中建立和刪除一個Bucket,以及如何上傳和下載一個檔案。 *

使用阿里OSS下載專案檔案

1、登入阿里雲開通阿里雲OSS,根據官網說明進行操作獲取需要的配置引數 'id'=> '你的accessKeyId', 'key'=> '你的accessKeySecret', 'host' => 'oss-cn-beijing.aliyunc

tp5呼叫阿里oss檔案

推薦使用composer方式 composer方式安裝SDK的步驟如下: 在專案的根目錄執行composer require aliyuncs/oss-sdk-php,或者在composer.j

阿里OSS 檔案 刪除檔案自封裝 —python

<pre name="code" class="python"># -*- coding: utf-8 -*- """ wrapper of oss2. """ import oss2 from PwLogging import PwLogging cl

SpringBoot基於阿里OSS檔案

一:需求背景.       Web系統開發中,檔案上傳是非常常見的功能,本來也沒啥好說的,就是通過IO流將檔案寫到另外一個地方,這個地方可以是       1. 專案的目錄中的某個資料夾.      2. 本地碟符的某個檔案下.      3. 雲服務OSS裡面.例如七牛雲,

阿里OSS檔案工具類

/**    *  *  *  阿里雲OSS上傳檔案工具 *   *  支援普通檔案上傳,限制大小檔案上傳,限制大小圖片上傳 *    *   @version1.0 */public class AliyunOssUtil {private Logger logger =

tp框架 阿里oss ,刪除,判斷是不是存在

composer require aliyuncs/oss-sdk-php  配置檔案如下 'ALIOSS_CONFIG' => array( 'KEY_ID' => '', 'KEY_SECRET' => '',

Java專案整合阿里OSS圖片

工具類: import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.slf4j.Lo

關於阿里oss圖片之後會被旋轉90度的解決辦法

問題描述:正常的圖片前端上傳到oss成功之後的資源地址。在html上引用的時候被旋轉了90度oss資源地址直接在瀏覽器開啟就不會旋轉問題原因:某些手機拍攝出來的照片可能帶有旋轉引數(存放在照片exif資訊裡面)。而oss資源上傳之後會預設自適應方向所以在img標籤中圖片就被旋轉了90度。 解決辦法:阿里雲給

阿里oss與下載

public class OSSClientUtil { //填入相應字串 private static String endpoint = ""; private static String accessKeyId = ""; private static Str

阿里 javascript檔案(圖片、視訊、壓縮包等檔案)到 物件儲存 OSS ,返回檔案、圖片、音訊、視訊等URL路徑

目的:前端上傳檔案(圖片、視訊、音訊等)到阿里雲伺服器裡面,並且獲得上傳檔案的URL路徑 前提:首先要買一個阿里雲伺服器,自己百度不會; 第一步:登入阿里雲賬號,點選管理控制檯-->物件儲存 OSS 第二步:新建儲存空間(圖一、圖二) (圖一) (圖二

詳解wordpress如何把檔案儲存到阿里OSS

自己搞了一個Wordpress的部落格,裝完之後一直晾著沒管,最近閒來開荒。為了減小伺服器的頻寬、儲存、CUP的壓力,決定把部落格中的所有檔案都儲存到阿里雲OSS上面。 關於這個問題,自己去呼叫OSS的SDK然後再去修改wordpress這種方式肯定是費時又費力,哪怕是你閒得蛋疼也不會這麼幹,何況是忙到蛋疼

阿裏OSS文件本地調試跨域問題解決

服務 描述 文件 join drivers bsp con res sys 問題描述: 最近後臺說為了提高上傳效率,要前端直接上傳文件到阿裏雲,而不經過後臺。因為在阿裏雲服務器設置的允許源(region)為某個固定的域名下的源(例如*.cheche.com),直接在本地訪問

阿里oss掛載到本地oss檔案的上線記錄

我司的oss主要用來儲存靜態圖片,當前mobile和web站所使用的靜態圖片都放置在oss中使用,因此測試環境和生產環境都存在oss。因此,每次上線需要把測試oss上的檔案上傳到生產的oss上。步驟如下: 1、將目的端(即線上)的bucket掛載到本地的zice機器,使用o

通過阿里路徑獲取EXCEL檔案進行資料讀取

通過需求,要對上傳的EXCEL檔案進行資料讀取併入庫。由於EXCEL是由前端直傳到阿里雲,所以只有一個上傳後的檔案路徑。對於先下載在讀取在刪除的方式覺得十分耗時且無用,所以試圖直接根據URL地址來讀取流,生成EXCEL物件並讀取資料。程式碼如下:public static v

ssh本地檔案到linux伺服器

1、從伺服器上下載檔案scp [email protected]39.107.80.119:/var/www/test.js 把192.168.0.101上的/var/www/test.js

git命令本地檔案到GitHub

git命令上傳本地檔案到GitHub 1.下載git工具 2.繫結使用者 啟動gitBash 繫結使用者名稱和郵箱 在開啟的GIt Bash中輸入以下命令(使用者和郵箱為你github註冊的賬號和郵箱) $ git c

本地檔案到hdfs

package com.yc.hadoop.hdfs; import java.net.URI; import java.util.Scanner; import org.apache.hadoop.conf.Configuration; import org.apache.

阿里OSS儲存了什麼東西?

阿里雲物件儲存服務(Object Storage Service,簡稱OSS)為您提供基於網路的資料存取服務。使用OSS,您可以通過網路隨時儲存和呼叫包括文字、圖片、音訊和視訊等在內的各種非結構化資料檔案。 阿里雲OSS將資料檔案以物件(object)的形式上傳到儲存空間(bucket)中。

如何使用阿里主機搭建Nginx+FastDFS檔案伺服器(超詳細)

關於Netty的話,後面再寫一個小案例,目前沒有時間,專案的內容不好上傳。多嘴了,下面開始今天的內容,由於目前專案要做搭建一個檔案伺服器,想想免費的也只有FastDFS了,於是開始搭建並記錄下來。 1、準備 本次系統使用CentOS7.3,在安裝前需要安裝nginx的一些依賴庫: gcc