1. 程式人生 > >七牛雲上傳檔案工具類

七牛雲上傳檔案工具類

 1 方法1  upload(String file, String filename)上傳伺服器檔案路徑的demo

2 方法2 

updateFile(MultipartFile file, String filename) 上傳springmvc multipartFile 前端上傳的檔案流上傳demo,

僅供參考,有問題多多指教

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;

public class QinniuUtil {

    //設定好賬號的ACCESS_KEY和SECRET_KEY
    private static String ACCESS_KEY = "your access_key"; //這兩個登入七牛 賬號裡面可以找到
    private static String SECRET_KEY = "your secret_key";

    //要上傳的空間
    private static String bucketname = "bucketname1"; //對應要上傳到七牛上 你的那個路徑(自己建資料夾 注意設定公開)

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

    //簡單上傳,使用預設策略,只需要設定上傳的空間名就可以了
    public static String getUpToken(){
        return auth.uploadToken(bucketname);
    }

    /** 普通上傳[根據檔案路徑]
     *
     * @param file
     * @param filename 上傳到七牛後儲存的檔名
     * @throws IOException
     */
    public static void upload(String file, String filename) throws Exception {
        try {
            //呼叫put方法上傳
            Response res = uploadManager.put(file, filename, 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
            }
        }
    }

    /**
     *springmvc MultipartFile 上傳檔案流
     * @param file 上傳檔案流
     * @param filename 檔名
     * @return
     * @throws Exception
     */

    public static String updateFile(MultipartFile file, String filename) throws Exception {
        //預設不指定key的情況下,以檔案內容的hash值作為檔名
        try {
            InputStream inputStream=file.getInputStream();
            ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
            byte[] buff = new byte[600]; //buff用於存放迴圈讀取的臨時資料
            int rc = 0;
            while ((rc = inputStream.read(buff, 0, 100)) > 0) {
                swapStream.write(buff, 0, rc);
            }

            byte[] uploadBytes  = swapStream.toByteArray();
            try {
                Response response = uploadManager.put(uploadBytes,filename,getUpToken());
                //解析上傳成功的結果
                DefaultPutRet putRet;
                putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                return putRet.key;

            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                }
            }
        } catch (UnsupportedEncodingException ex) {
        }
        return null;
    }

    public static void main(String args[]) throws Exception {
        new QinniuUtil().upload("d:\\\\20151207175926.jpg", "201801311508134441233.png");
    }

}