java 上傳檔案到七牛雲端儲存的demo
阿新 • • 發佈:2019-01-07
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 為空間中的檔名