Springboot文件上傳 和 阿里的OSS對象存儲 文件上傳

基本上每個一個系統裏都會有文件上傳這一需求

SpringBoot中的文件上傳操作方式‍

@RestController
​public class UploadAction {
    //磁盤位置
    @Value("${upload.tmp.dir}")
    private String tmp;
​
    @RequestMapping("/upload")
    public ResponseBean upload(MultipartFile  file) throws IOException {
        //得到原來的文件名  xxxx.jpg
        String oldFileName = file.getOriginalFilename();
//        System.out.println("舊的名稱"+oldFileName);
        //得到一個最後一個.的位置
        int index = oldFileName.lastIndexOf('.');
        //得到後輟名
        String extName = oldFileName.substring(index);
        //新的文件名
        String newFileName = System.currentTimeMillis()+extName;
//        System.out.println("新的名稱"+newFileName);
        //傳到tmp目錄
        File descFile = new File(tmp, newFileName);
        file.transferTo(descFile);
        return new ResponseBean(0,0,newFileName);
    }
}

阿里的OSS

基本配置


    //訪問地址
    private static String endpoint = "http://oss-cn-beijing.aliyuncs.com";
​
    // 創建和查看訪問密鑰的鏈接地址是:https://ak-console.aliyun.com/#/。
    private static String accessKeyId = "自己控制檯的key";
    private static String accessKeySecret = "key對應的密鑰";
​
    // Bucket命名規範如下:只能包括小寫字母,數字和短橫線(-),必須以小寫字母或者數字開頭,長度必須在3-63字節之間。
    private static String bucketName = "liuqiyou";
​
    //目錄 不能以“/”或者“\”字符開頭。
    private static String firstKey = "images";

上傳


 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
 try {
if (ossClient.doesBucketExist(bucketName)) {
  System.out.println("您已經創建Bucket:" + bucketName + "。");
} else {
  System.out.println("您的Bucket不存在,創建Bucket:" + bucketName + "。");
  // 創建Bucket。詳細請參看“SDK手冊 > Java-SDK > 管理Bucket”。
  // 鏈接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
  ossClient.createBucket(bucketName);
}          
  //文件名 這裏寫死了,可以考慮使用雪花算法來生成,解決文件名重複問題
  String fileKey = "liuqiyou";
  // 那個oss ,目錄加文件名 ,本地文件地址
  ossClient.putObject(bucketName, firstKey+"/"+fileKey, new File("C:\\Users\\Administrator\\Desktop\\對稱加密.jpg"));
  System.out.println("Object:" + fileKey + "存入OSS成功。");
} catch (OSSException oe) {
        oe.printStackTrace();
} catch (ClientException ce) {
        ce.printStackTrace();
} catch (Exception e) {
        e.printStackTrace();
} finally {
        ossClient.shutdown();
}

在這裏插入圖片描述
在這裏插入圖片描述

刪除

// 文件名
String fileKey = "liuqiyou";
// 要刪除的oos , 目錄加文件名
ossClient.deleteObject(bucketName, firstKey+"/"+fileKey);
System.out.println("刪除Object:" + fileKey + "成功。");

在這裏插入圖片描述
還有一種 FastDFS 自建的分佈式文件系統,現在還不會,會的時候在加到這個文章去。

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