最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合七牛云上傳圖片的示例代碼

 更新時(shí)間:2023年10月31日 15:04:10   作者:I'm Jie  
本文就來介紹了SpringBoot整合七牛云上傳圖片的示例代碼,用戶在前端上傳圖片后,交由后端處理,上傳至七牛云,感興趣的可以了解一下

在個(gè)人的一個(gè)項(xiàng)目中有一些需求需要用到圖片文件上傳,那么相比于阿里云我選擇了七牛云,主要還是想白嫖,哈哈。

七牛云每個(gè)月有一定的免費(fèi)額度,對于目前我的項(xiàng)目來說還是足夠用的

image-20220131215214216

阿里云OSS個(gè)人理解是上傳不收費(fèi),但是訪問就會產(chǎn)生費(fèi)用

開通七牛云

注冊登錄七牛云:https://sso.qiniu.com/

image-20211211213403090

進(jìn)入管理控制臺

image-20211211190618806

選擇資源管理→新建存儲空間

image-20211211190740819

進(jìn)入空間管理之后,點(diǎn)擊【+新建空間】

image-20211211190913730

右側(cè)設(shè)置【空間名稱】,【區(qū)域】,【訪問控制】

image-20211211213021155

空間創(chuàng)建完之后,七牛云會給一個(gè)具有一個(gè)月時(shí)限的測試域名,也可以綁定備案的域名。

image-20211211191124665

到這里,七牛云的對象存儲空間就設(shè)置成功了。

七牛云開發(fā)文檔

官方文檔地址:https://developer.qiniu.com/kodo/1239/java

點(diǎn)擊【文檔】→【開發(fā)者中心】

image-20211211191343156

點(diǎn)擊【對象存儲】

image-20211211191442232

就可以看到官方文檔了

image-20211211191532537

SpringBoot 上傳圖片

獲取七牛云密鑰

進(jìn)入七牛云控制臺

image-20220131212145277

點(diǎn)擊【頭像】→【密鑰管理】

image-20220131212100619

創(chuàng)建密鑰,復(fù)制保存,下面要用

image-20220131212314100

導(dǎo)入依賴

<!--qiniu依賴-->
<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>7.2.28</version>
</dependency>
<!--thymeleaf依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

配置 application.yml

spring:
  freemarker:
    suffix: .html
    cache: false
  servlet:
    multipart:
      max-file-size: 20MB
      max-request-size: 20MB

qiniu:
  accessKey: 申請的 AccessKey,AK
  accessSecretKey: 申請的 SecretKey,SK
  bucket: 創(chuàng)建的空間名
  imageUrl: 域名

編寫 ImageUtils

圖片的上傳工具類

@Component
public class ImageUtils {

    @Value("${qiniu.accessKey}")
    private String accessKey;

    @Value("${qiniu.accessSecretKey}")
    private String accessSecretKey;

    @Value("${qiniu.bucket}")
    private String bucket;

    @Value("${qiniu.imageUrl}")
    private String url;

	/**
     * 處理多文件
     * @param multipartFiles
     * @return
     */
    public Map<String, List<String>> uploadImages(MultipartFile[] multipartFiles){
        Map<String,List<String>> map = new HashMap<>();
        List<String> imageUrls = new ArrayList<>();
        for(MultipartFile file : multipartFiles){
            imageUrls.add(uploadImageQiniu(file));
         }
        map.put("imageUrl",imageUrls);
        return map;
    }

    /**
     * 上傳圖片到七牛云
     * @param multipartFile
     * @return
     */
    private String uploadImageQiniu(MultipartFile multipartFile){
        try {
            //1、獲取文件上傳的流
            byte[] fileBytes = multipartFile.getBytes();
            //2、創(chuàng)建日期目錄分隔
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            String datePath = dateFormat.format(new Date());

            //3、獲取文件名
            String originalFilename = multipartFile.getOriginalFilename();
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String filename = datePath+"/"+UUID.randomUUID().toString().replace("-", "")+ suffix;

            //4.構(gòu)造一個(gè)帶指定 Region 對象的配置類
            //Region.huabei(根據(jù)自己的對象空間的地址選
            Configuration cfg = new Configuration(Region.huabei());
            UploadManager uploadManager = new UploadManager(cfg);

            //5.獲取七牛云提供的 token
            Auth auth = Auth.create(accessKey, accessSecretKey);
            String upToken = auth.uploadToken(bucket);
            uploadManager.put(fileBytes,filename,upToken);

            return url+filename;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

編寫 Controller

跳轉(zhuǎn)到 upload.html 的接口

@Controller
public class PageController {

    @RequestMapping("/upload")
    public String to(){
        return "upload";
    }

}

圖片服務(wù)接口

@RestController
@RequestMapping("/api")
public class ImageController {

    @Autowired
    private ImageUtils imageUtils;

    @PostMapping("/image/upload")
    public ResponseResult uploadImage(@RequestParam(value = "file",required = false) MultipartFile[] multipartFile){
        if(ObjectUtils.isEmpty(multipartFile)){
            return new ResponseResult(HttpResponseStatus.OK.code(), "請選擇圖片");
        }
        Map<String, List<String>> uploadImagesUrl = imageUtils.uploadImages(multipartFile);
        return new ResponseResult(HttpResponseStatus.OK.code(), "上傳成功",uploadImagesUrl);
    }

}

注:ResponseResult 為響應(yīng)結(jié)果封裝類,自定義即可。

編寫前端上傳頁面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://localhost:8002/api/image/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit">
</form>
</body>

注:<input type="file" name="file">的 name 值一定要和接口的 @RequestParam("file")一樣

測試

訪問 http://localhost:8002/upload

image-20220131214143586

選擇圖片,點(diǎn)擊提交

image-20220131214428131

上傳成功

image-20220131214542623

查看七牛云

image-20220131214703423

到此這篇關(guān)于SpringBoot 整合七牛云上傳圖片的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot 七牛云上傳圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis generator如何自動(dòng)生成代碼

    Mybatis generator如何自動(dòng)生成代碼

    這篇文章主要介紹了Mybatis generator如何自動(dòng)生成代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 解決Maven項(xiàng)目中 Invalid bound statement 無效的綁定問題

    解決Maven項(xiàng)目中 Invalid bound statement 無效的綁定問題

    這篇文章主要介紹了解決Maven項(xiàng)目中 Invalid bound statement 無效的綁定問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringBoot全局異常攔截與自定義錯(cuò)誤頁面實(shí)現(xiàn)過程解讀

    SpringBoot全局異常攔截與自定義錯(cuò)誤頁面實(shí)現(xiàn)過程解讀

    本文介紹了SpringBoot中全局異常攔截與自定義錯(cuò)誤頁面的實(shí)現(xiàn)方法,包括異常的分類、SpringBoot默認(rèn)異常處理機(jī)制、全局異常攔截實(shí)現(xiàn)、自定義錯(cuò)誤頁面實(shí)現(xiàn)以及兩者的結(jié)合使用,通過這些技術(shù),可以提高系統(tǒng)的穩(wěn)定性和用戶體驗(yàn)
    2025-12-12
  • Java?HashMap中除了死循環(huán)之外的那些問題

    Java?HashMap中除了死循環(huán)之外的那些問題

    這篇文章主要介紹了Java?HashMap中除了死循環(huán)之外的那些問題,這些問題大致可以分為兩類,程序問題和業(yè)務(wù)問題,下面文章我們一個(gè)一個(gè)來看,需要的小伙伴可以參考一下
    2022-05-05
  • hibernate5.2的基本配置方法(詳解)

    hibernate5.2的基本配置方法(詳解)

    下面小編就為大家?guī)硪黄猦ibernate5.2的基本配置方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • SpringBoot Application的exclude不生效問題及排查

    SpringBoot Application的exclude不生效問題及排查

    這篇文章主要介紹了SpringBoot Application的exclude不生效問題及排查,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java switch語句的使用詳解

    Java switch語句的使用詳解

    Java switch語句隨JDK演進(jìn)支持int/char、String及模式匹配,具備表達(dá)式限制、穿透控制、作用域隔離等特性,適用于狀態(tài)機(jī)、命令解析等場景,需注意類型兼容性及break使用,推薦使用箭頭語法和編譯器優(yōu)化提升代碼質(zhì)量
    2025-07-07
  • 解析Neatbeans(常見錯(cuò)誤) build-impl.xml:305: Compile failed

    解析Neatbeans(常見錯(cuò)誤) build-impl.xml:305: Compile failed

    本篇文章是對Neatbeans(常見錯(cuò)誤) build-impl.xml:305: Compile failed的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • java中使用logger打印日志有哪些坑

    java中使用logger打印日志有哪些坑

    在Java中使用日志記錄器(Logger)打印日志時(shí),確實(shí)存在一些常見的坑需要注意,本文就來介紹一下幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • maven項(xiàng)目打包如何去掉不需要的module

    maven項(xiàng)目打包如何去掉不需要的module

    文章總結(jié):在my-project工程依賴my-core和my-common,且my-project在總工程AAA中時(shí),建議通過以下兩種方案優(yōu)化打包流程:1.?使用pom區(qū)分,重新編寫pom文件,并指定需要重新編譯的工程到modules中,然后在編譯時(shí)指定pom文件;
    2024-12-12

最新評論

浦城县| 封丘县| 虹口区| 莲花县| 丹东市| 鄂伦春自治旗| 舞阳县| 达州市| 和硕县| 于田县| 于田县| 建宁县| 彭州市| 七台河市| 红桥区| 红安县| 巢湖市| 连南| 衡阳县| 友谊县| 延边| 平武县| 柳林县| 景洪市| 高邮市| 托克逊县| 宁阳县| 兴业县| 甘肃省| 庄河市| 手游| 濮阳市| 乌拉特前旗| 呈贡县| 东平县| 格尔木市| 安徽省| 朝阳市| 瓦房店市| 平谷区| 洞口县|