Java 代碼實現七牛云存儲圖片
前言
項目想把圖片上傳到七牛云存儲上,筆者把七牛最簡單的用法示范一下,方便初學者。文章如有錯誤,歡迎各位指出。
比如上面的 beautiful girl 圖片的 url 是http://img.blog.csdn.net/20160119111734404
我們最終用代碼上傳到七牛圖床后,七牛云存儲的 url 為 http://7xq7ik.com1.z0.glb.clouddn.com/testimagea
本文地址 http://blog.csdn.net/never_cxb/article/details/50534859 轉載請注明出處
準備工作
注冊一個七牛賬戶
網址 https://portal.qiniu.com/signup?code=3lpzf1unpyr0y登錄七牛開發者自助平臺,查看 Access Key 和 Secret Key (這兩個 Key 代碼會用到)
下載七牛依賴 jar 包
- 可以用包管理器 gradle 下載(查看這篇文章 《Eclipse 使用 Gradle 下載 Jar 包全紀錄》)
- 手動下載依賴包 qiniu-java-sdk-7 依賴 Google Gson 、 okhttp, okhttp 依賴 okio。
新建空間
圖片會上傳到某個空間里,代碼里會用到空間名。
代碼
我們的項目需求是抓取圖片,
輸入圖片原始的的 url,然后利用代碼抓取到七牛圖床上,返回圖片在七牛上的 url。
首先定義變量存放你的 Key 和空間名。
public static final String ACCESS_KEY = "******"; // 你的access_key public static final String SECRET_KEY = "******"; // 你的secret_key public static final String BUCKET_NAME = "******"; // 你的secret_key
//獲取到 Access Key 和 Secret Key 之后,您可以按照如下方式進行密鑰配置 Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); //獲取空間管理器 BucketManager bucketManager = new BucketManager(auth); try { // 要求url可公網正常訪問BucketManager.fetch(url, bucketName, key); // @param url 網絡上一個資源文件的URL // @param bucketName 空間名稱 // @param key 空間內文件的key[唯一的] DefaultPutRet putret = bucketManager.fetch(originalUrl, BUCKET_NAME, "testimage"); System.out.println(putret.key); System.out.println("succeed upload image"); } catch (QiniuException e1) { e1.printStackTrace(); }
代碼思路很簡單,根據 key 獲取到空間管理器,再指定圖片的原始 url、空間名、圖片的 key,就可以把圖片上傳到七牛上了
在七牛的空間內容管理部分可以看到圖片已經上傳好了,新的 url 為 http://7xq7ik.com1.z0.glb.clouddn.com/testimage
那么問題來了,如何獲取圖片新的 url 呢?總不能每次都通過瀏覽器訪問七牛的網站,如何在代碼里獲取我們圖片在七牛上的 url 呢?
域名+key 獲取新的 url
還記得剛才的代碼里我們給圖片指定了 key 嗎,只是圖片在七牛空間里的唯一表示。剛才我們指定的 key 為testimage
,看新的圖片 url 為http://7xq7ik.com1.z0.glb.clouddn.com/testimage
,新url就是剛才的 key 結尾的。
前面一大串的字符是七牛給我們的默認域名,你也可以自定義域名。
那么代碼思路也很簡單,定義一個變量存放空間的域名,然后域名拼接圖片的 key 就得到圖片上傳后的 url。
private static final String BUCKET_HOST_NAME = "7xq7ik.com1.z0.glb.clouddn.com"; public String uploadByUrl(String originalUrl) { //... String imageKey = "testimage"; DefaultPutRet putret = bucketManager.fetch(originalUrl, BUCKET_NAME, imageKey); newUrl = BUCKET_HOST_NAME + "/" + imageKey; System.out.println(newUrl); System.out.println("succeed upload image"); } catch (QiniuException e1) { e1.printStackTrace(); } return null; }
輸出信息
7xq7ik.com1.z0.glb.clouddn.com/testimage succeed upload image
邀請注冊
如果您還沒有注冊七牛,可以通過我的邀請鏈接注冊 https://portal.qiniu.com/signup?code=3lpzf1unpyr0y,體驗用戶有一些免費空間。