Java後臺上傳圖片到七牛雲

一:

看某馬的培訓視頻,要用到fastdfs,配置起來挺麻煩,於是決定自己弄一個圖片服務器,因爲之前做安卓項目的時候用過七牛雲的SDK感覺挺ok

,於是改用七牛雲。使用七牛雲的對象存儲,需要一個備案的域名,用來綁定存儲空間,如果只是短時間用,七牛雲倒是會提供一個30天的臨時

域名。以自己的域名加一個前綴,比如media.XXX.cn之後會獲得一個CNAME,然後在域名廠商的控制檯添加解析,比如我是在阿里雲買的:

這樣就能使用了,訪問圖片就是medis.XXX.cn/example.jpg

二:

接下來到後臺傳送模塊的編寫。

添加七牛雲依賴到pom(建議使用官方文檔推薦的版本)

<dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.2.0, 7.2.99]</version>
        </dependency>

由於Spring接收文件的類型是MultipartFile,需要先轉成File文件。

//File代入參數是臨時文件的目錄,在磁盤新建一個空文件就行,否則好像會報異常。
File file = new File("C:\\test");
//uploadFile是MultipartFile對象 uploadFile.transferTo(file);
//得到圖片的url String url = QiniuCloudUtil.upload(file, preName); //生成的文件會存在本地,我這裏選擇刪除它 file.delete();

工具如下,不復雜:

import java.io.File;
import java.io.IOException;
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 org.springframework.util.StringUtils;

/**
 * @author yintianhao
 * @createTime 07 21:07
 * @description 七牛雲工具
 */
public class QiniuCloudUtil {

    // 設置需要操作的賬號的AK和SK
    private static final String ACCESS_KEY = "*******";
    private static final String SECRET_KEY = "*******";

    // 要上傳的空間名
    private static final String bucketname = "****";

    // 密鑰
    private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

    //上傳
    public static String upload(File file, String key) throws IOException{
        // 創建上傳對象,Zone*代表地區
        Configuration configuration = new Configuration(Zone.zone2());
        UploadManager uploadManager = new UploadManager(configuration);
        try {
            // 調用put方法上傳
            String token = auth.uploadToken(bucketname);
            if(StringUtils.isEmpty(token)) {
                System.out.println("未獲取到token,請重試!");
                return null;
            }
            print("File name = "+file.getName());
            Response res = uploadManager.put(file,key,token);
            // 打印返回的信息
            if (res.isOK()){
                return key;
            }
        }catch (QiniuException e) {
            Response r = e.response;
            // 請求失敗時打印的異常的信息
            e.printStackTrace();
            System.out.println("error "+r.toString());
            try {
                // 響應的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                System.out.println("error "+e1.error());
            }
        }
        return null;
    }
}

end。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章