注冊七牛云 - 小王小王ii - 博客園 (cnblogs.com)
1.依賴
<dependencies><dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.7</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency> </dependencies>
2.文件工具類
package qiniu;public class FileUtil {// 圖片允許的后綴擴展名public static String[] IMAGE_FILE_EXTD = new String[]{"png", "bmp", "jpg", "jpeg", "pdf"};/*** 獲取文件后綴* @param fileName* @return*/public static String getSuffix(String fileName) {int i = fileName.lastIndexOf(".");//如果沒有.證明該文件名不正確if (i < 0) {throw new RuntimeException("文件名不正確");};return fileName.substring(i + 1);}/*** 判斷文件后綴是否符合規定* @param fileName* @return*/public static boolean isSuffixAllow(String fileName) {String suffix = FileUtil.getSuffix(fileName);for (String s : IMAGE_FILE_EXTD) {if (s.equals(suffix)) return true;}return false;} }?
3.七牛云工具類
ak,ck在個人中心獲取
外域鏈接在自己的bucket界面可以獲取得到
package qiniu;import com.alibaba.fastjson.JSONObject; import com.qiniu.common.QiniuException; import com.qiniu.common.Zone; import com.qiniu.http.Response; import com.qiniu.storage.Configuration; import com.qiniu.storage.UploadManager; import com.qiniu.util.Auth;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.UUID;public class QiNiuUtil {//以下信息在實際開發中應當從配置文件讀取public static String ak = "?";public static String sk = "?";//外域鏈接public static String domainName = "?";/*** 上傳文件* @param file 文件* @param bucketName* @return 返回URL,供訪問(要公開的bucket才可以訪問)*/public static String upload(File file, String bucketName) {//判斷文件后綴是否符合規定if (!FileUtil.isSuffixAllow(file.getName())) {throw new RuntimeException("不支持改文件后綴");}try {FileInputStream fileInputStream = new FileInputStream(file);/*上傳文件*///獲取上傳TokenAuth auth = Auth.create(ak, sk);String uploadToken = auth.uploadToken(bucketName);//構造文件名String fileName= UUID.randomUUID().toString().replace("-", "")+ "." + FileUtil.getSuffix(file.getName());//構造上傳對象,上傳文件UploadManager uploadManager = new UploadManager(new Configuration(Zone.zone2()));這里選擇Zone1還是Zone2...要根據你選擇的地區來定Response rep = uploadManager.put(fileInputStream, fileName, uploadToken, null, null);//構造訪問URL進行返回return domainName + JSONObject.parseObject(rep.bodyString()).get("key").toString();} catch (FileNotFoundException e) {e.printStackTrace();throw new RuntimeException("上傳文件失敗");}catch (QiniuException e) {throw new RuntimeException("上傳文件失敗");}}public static void main(String[] args) {String upload = upload(new File("C:\\Users\\Administrator\\Desktop\\OIP-C.jpg"), "?");System.out.println(upload);} }
?