1. 程式人生 > >java 上傳檔案到七牛雲端儲存的demo

java 上傳檔案到七牛雲端儲存的demo

maven 

   引用 網上maven伺服器 以及最新版的maven依賴

<repositories>
		<repository>
			<id>public</id>
			<!-- <url>http://192.168.2.115:8081/nexus/content/groups/public/</url> -->
			<url>https://repo.maven.apache.org/maven2/</url>
		</repository>
</repositories>
 
		<dependency>
		    <groupId>com.qiniu</groupId>
		    <artifactId>qiniu-java-sdk</artifactId>
		    <version>7.1.0</version>
		</dependency>


java 程式碼

import java.io.IOException;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;

public class QiniuUtil {
	
	 //設定好賬號的ACCESS_KEY和SECRET_KEY
	  String ACCESS_KEY = "Bq**********************lSc_pZUZ_"; //這兩個登入七牛 賬號裡面可以找到
	  String SECRET_KEY = "Dyag******************";

	  //要上傳的空間
	  String bucketname = "auto***file"; //對應要上傳到七牛上 你的那個路徑(自己建資料夾 注意設定公開)
	  //上傳到七牛後儲存的檔名
	  String key = "daimo6.png";  
	  //上傳檔案的路徑
	  String FilePath = "d:\\daimao5.png";  //本地要上傳檔案路徑

	  //金鑰配置
	  Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
	  //建立上傳物件
	  UploadManager uploadManager = new UploadManager();

	  //簡單上傳,使用預設策略,只需要設定上傳的空間名就可以了
	  public String getUpToken(){
	      return auth.uploadToken(bucketname);
	  }
	  //普通上傳
	  public void upload() throws IOException{
	    try {
	      //呼叫put方法上傳
	      Response res = uploadManager.put(FilePath, key, getUpToken());
	      //列印返回的資訊
	      System.out.println(res.bodyString()); 
	      } catch (QiniuException e) {
	          Response r = e.response;
	          // 請求失敗時列印的異常的資訊
	          System.out.println(r.toString());
	          try {
	              //響應的文字資訊
	            System.out.println(r.bodyString());
	          } catch (QiniuException e1) {
	              //ignore
	          }
	      }       
	  }

	  public static void main(String args[]) throws IOException{  
	    new QiniuUtil().upload();
	  }

}

service呼叫

@RequestMapping(value = "list", method = RequestMethod.GET)
	public ModelAndView list(SearchVO vo, Integer sortType , HttpServletRequest request,@Language String language) throws Exception {
		
		
		 new QiniuUtil().upload();
}


重要的是如何得到 上傳後的檔案路徑

每個賬戶 對應一個 外鏈的字首 都是一樣的 比如我的

http://7xuac******n.com/   看下你上傳的檔案可以發現這個規律,然後後面加上你傳的檔名字就能對應你上傳檔案的外網地址了

如果檔案有空格 和  中文名稱   空格可以替換掉""    中文名稱檔案地址略微麻煩點, 我還在想,不知道七牛提供了api查詢某個檔案的網址不


另外 

這個函式修改下 就是 覆蓋上傳 替換掉原來檔案

	  public String getUpToken(){
//	      return auth.uploadToken(bucketname);
		  //<bucket>:<key>,表示只允許使用者上傳指定key的檔案。在這種格式下檔案預設允許“修改”,已存在同名資源則會被本次覆蓋。
		    //如果希望只能上傳指定key的檔案,並且不允許修改,那麼可以將下面的 insertOnly 屬性值設為 1。
		    //第三個引數是token的過期時間
		     return auth.uploadToken(bucketname, key, 3600, new StringMap().put("insertOnly", 0 ));
	  }

檔案外鏈的格式為

key 為空間中的檔名