国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SpringBoot】簡單的文件上傳和文件下載以及圖片回顯

這篇具有很好參考價(jià)值的文章主要介紹了【SpringBoot】簡單的文件上傳和文件下載以及圖片回顯。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

介紹

這里是小編成長之路的歷程,也是小編的學(xué)習(xí)之路。希望和各位大佬們一起成長!

以下為小編最喜歡的兩句話:

要有最樸素的生活和最遙遠(yuǎn)的夢想,即使明天天寒地凍,山高水遠(yuǎn),路遠(yuǎn)馬亡。

一個(gè)人為什么要努力? 我見過最好的答案就是:因?yàn)槲蚁矚g的東西都很貴,我想去的地方都很遠(yuǎn),我愛的人超完美。因此,小編想說:共勉!?


目錄

前言

一、文件上傳與下載

1、文件上傳

第一步:pom.xml

第三步:在全局配置文件中添加文件上傳的相關(guān)配置

第四步:進(jìn)行文件上傳處理,實(shí)現(xiàn)文件上傳功能

二、回顯圖片

第一步:創(chuàng)建并編寫圖片回顯頁面

三、文件下載

第一步:添加文件下載依賴

第二步:創(chuàng)建文件下載頁面

第三步:創(chuàng)建控制器


一、文件上傳與下載


? 在開發(fā)Web應(yīng)用時(shí),文件上傳和下載是很常見的一個(gè)需求。瀏覽器通過表單形式將文件以流的形式傳遞給服務(wù)器,服務(wù)器再對上傳的數(shù)據(jù)進(jìn)行解析處理。下載文件通過 IO 流實(shí)現(xiàn),大多數(shù)框架并沒有對文件下載進(jìn)行封裝處理,并且文件下載時(shí)涉及不同瀏覽器的解析處理,可能會(huì)出現(xiàn)中文亂碼的情況。

1、文件上傳


實(shí)現(xiàn)文件上傳,需要滿足三個(gè)條件。

1、表單提交方式必須是 POST
2、表單需要設(shè)置 enctype 屬性,且值為 multipart/form-data
3、表單需要設(shè)置一個(gè)文件域,也就是表單項(xiàng) type = "file"

第一步:pom.xml


注意:SpringBoot并沒有提供文件上傳所需要的 jar 包或依賴,需要再項(xiàng)目中加入文件上傳的相關(guān) jar 包或 maven 依賴,如圖所示:

springboot關(guān)于文件上傳與回顯,springboot,java,前端,開發(fā)語言,spring boot

?下面是依賴包:

(注意:看你創(chuàng)建的springboot項(xiàng)目是什么版本的,如果你jdk使用的是1.8,那么創(chuàng)建項(xiàng)目的時(shí)候就要選擇2.7.8或者2.7.9,這個(gè)時(shí)候使用下面的依賴版本是沒有沖突的,因?yàn)樾【幰彩鞘褂玫?.7.8,如果使用3及3以上的版本出現(xiàn)問題的話,可以考慮是不是包沖突了)

        <!--文件上傳-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.5</version>
        </dependency>

第二步: 編寫文件上傳的表單頁面

在項(xiàng)目中的 resources/templates 目錄創(chuàng)建一個(gè)名為 upload.html 頁面

<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
??? <div>
??????? <label>選擇文件:</label>
??????? <input type="file" name="attach"/>
??? </div>
??? <div style="margin-top:20px">
??????? <input type="submit" value="確認(rèn)上傳"/>
??? </div>
</form>

第三步:在全局配置文件中添加文件上傳的相關(guān)配置

application.properties

  #設(shè)置單個(gè)文件大小
  spring.servlet.multipart.max-file-size=50MB
  #設(shè)置總上傳數(shù)據(jù)大小
  spring.servlet.multipart.max-request-size=50MB

  #自定義屬性
  #設(shè)置文件上傳位置(絕對路徑)
  file.upload.path=d:/

  #設(shè)置文件上傳后回顯位置(相對路徑)
  file.upload.path.relative=/**
  # 這是連接數(shù)據(jù)庫8.0及以上的版本,如果是5版本就不需要加cj,在url中不需要加時(shí)區(qū),8版本不加時(shí)區(qū)的話 
  # 可能會(huì)報(bào)時(shí)區(qū)的問題

  spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
  datasource.url= localhost:3306/testdb
  spring.datasource.url= jdbc:mysql://${datasource.url}? 
  useSSL=false&useUnicode=true&characterEncoding=utf- 
  8&allowMultiQueries=true&autoReconnect=true&maxReconnects=10&serverTimezone=UTC
  spring.datasource.username= root
  spring.datasource.password= root

需要注意的是,通過 spring.servlet.multipart.max-file-size 屬性設(shè)置單個(gè)上傳文件的大小限制,默認(rèn)1MB,通過spring.servlet.multipart.max-request-size 屬性設(shè)置所有上傳文件的大小限制,默認(rèn)為 10MB。開發(fā)過程中,需要結(jié)合實(shí)際需求合理設(shè)置文件大小。

第四步:進(jìn)行文件上傳處理,實(shí)現(xiàn)文件上傳功能

在 controller 包下創(chuàng)建控制器

package com.lyn.controller;

  import org.apache.commons.io.FilenameUtils;

  import org.springframework.beans.factory.annotation.Value;

  import org.springframework.stereotype.Controller;

  import org.springframework.ui.Model;

  import org.springframework.web.bind.annotation.RequestMapping;

  import org.springframework.web.multipart.MultipartFile;

  

  import java.io.File;

  import java.io.IOException;

  import java.text.SimpleDateFormat;

  import java.util.Date;

  import java.util.UUID;

  

  @Controller

  public class FileController{

??? // 文件上傳位置

??? @Value("${file.upload.path}")

??? private String filePath;

  

??? /**

???? * 向文件上傳頁面跳轉(zhuǎn)

???? * @return

???? */

??? @RequestMapping("/toUpload")

??? public String toUpload(){

??????? return "upload";

??? }

  

??? /**

???? * 文件上傳

???? * @param attach

???? * @param model

???? * @return

???? */

??? @RequestMapping("/upload")

??? public String upload(MultipartFile attach, Model model){

??????? // 判斷文件是否為空,不為空則進(jìn)行文件上傳

??????? if(!attach.isEmpty()){

??????????? // 獲取源文件名稱

??????????? String fileName = attach.getOriginalFilename();

??????????? // 獲取源文件后綴名

??????????? String suffix = FilenameUtils.getExtension(fileName);

??????????? // 使用UUID重命名文件名稱

??????????? String newFileName = UUID.randomUUID().toString().replace("-","")+(".")+suffix;

??????????? // 使用日期解決同一文件夾中文件過多問題(以當(dāng)前日期命名文件夾)

??????????? String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

??????????? // 組裝最終文件名

??????????? String finalName = datePath+"/"+newFileName;

??????????? // 構(gòu)建文件對象

??????????? File dest = new File(filePath + finalName);

??????????? // 判斷該文件夾是否存在,不存在則創(chuàng)建

??????????? if(!dest.getParentFile().exists()){

??????????????? dest.getParentFile().mkdirs(); // 創(chuàng)建文件夾

??????????? }

??????????? try{

??????????????? // 將文件保存到硬盤

??????????????? attach.transferTo(dest);

??????????????? // 將當(dāng)前圖片放到模型中,便于頁面回顯

??????????????? model.addAttribute("image",finalName);

??????????? }catch(IOException e){

??????????????? e.printStackTrace();

??????????? }

??????? }

??????? // 返回頁面(該頁面是templates目錄下的頁面)

????? ??return "show";

??? }

}

第五步:測試

http://localhost:8080/toUpload

二、回顯圖片

如果上傳的文件是圖片,且需要在頁面中將圖片顯示,則需要對圖片進(jìn)行數(shù)據(jù)回顯,需要完成兩個(gè)步驟,分別是:

第一步:創(chuàng)建并編寫圖片回顯頁面

在項(xiàng)目中的 resources/templates 目錄下創(chuàng)建 show.html 頁面,代碼如下所示:

<!DOCTYPE html>

<html xmlns:th="http://www.thymeleaf.org">

<head>

??? <meta charset="UTF-8">

??? <title>圖片回顯</title>

</head>

<body>

??? <img th:src="@{'/'+${image}}"/>

</body>

</html>

創(chuàng)建并編寫文件上傳配置類

第二步:在項(xiàng)目中的 config 包下新建 UploadConfig 類

package com.lyn.config;

  import org.springframework.beans.factory.annotation.Value;

  import org.springframework.context.annotation.Configuration;

  import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

  import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

  

  @Configuration

  public class UploadConfig implements WebMvcConfigurer {

??? // 上傳地址

??? @Value("${file.upload.path}")

??? private String filePath;

  

??? // 顯示相對地址

??? @Value("${file.upload.path.relative}")

??? private String fileRelativePath;

  

  
    //地址映射 url地址與本地磁盤地址映射

??? @Override

??? public void addResourceHandlers(ResourceHandlerRegistry registry){

??????? // 讀取本地文件需要加上 file:/????
??? registry.addResourceHandler(fileRelativePath).addResourceLocations("file:/"+filePath);

??? }

}

三、文件下載

在Web開發(fā)中,文件下載能夠通過IO流實(shí)現(xiàn),所以多數(shù)框架并沒有對文件下載進(jìn)行封裝處理。文件下載時(shí)涉及不同瀏覽器的解析處理,可能會(huì)出現(xiàn)中文亂碼情況,并且不同瀏覽器之間的解析處理方式也會(huì)有所不同,例如谷歌和IE瀏覽器。

第一步:添加文件下載依賴

在 pom.xml 文件中引入文件下載的工具依賴 commons-io,還是需要注意版本的兼容性

<dependency>
??? <groupId>commons-io</groupId>
??? <artifactId>commons-io</artifactId>
??? <version>2.6</version>
</dependency>

第二步:創(chuàng)建文件下載頁面

在 resuources/templates 目錄下創(chuàng)建 download.html 頁面,代碼如下:

<h2>文件下載</h2>
<!-- 注意:這個(gè)路徑是你自己上傳文件的文件夾,比如小編的就在d盤有一個(gè)2023-02-20的文件夾-->
<a th:href="@{2023-02-20/1.jpg}" download="1.jpg">html頁面下載</a>
</body>

如圖:

springboot關(guān)于文件上傳與回顯,springboot,java,前端,開發(fā)語言,spring boot

?springboot關(guān)于文件上傳與回顯,springboot,java,前端,開發(fā)語言,spring boot

第三步:創(chuàng)建控制器

將方法寫在文件上傳的controller中

  /**
 * 文件下載的兩種方式,使用其中一種下載即可
 */
@RequestMapping("/download")
    public String downLoad(){
        return "download";
    }

    @GetMapping("/t3")
    public ResponseEntity<ByteArrayResource> down3() throws Exception {
        byte[] bytes = Files.readAllBytes(new File("d:\\2023-02-20\\1.jpg").toPath());
        ByteArrayResource bar = new ByteArrayResource(bytes);
        return ResponseEntity.ok()
                .contentType(MediaType.APPLICATION_OCTET_STREAM)
                .header("Content-disposition", "attachment; filename=1.jpg")
                .body(bar);
    }

以上就是小編所寫得文件上傳,回顯圖片,以及文件下載,希望能夠幫助到大家!!謝謝各位大佬的觀看?。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-791744.html

到了這里,關(guān)于【SpringBoot】簡單的文件上傳和文件下載以及圖片回顯的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot+vue文件上傳&下載&預(yù)覽&大文件分片上傳&文件上傳進(jìn)度

    SpringBoot+vue文件上傳&下載&預(yù)覽&大文件分片上傳&文件上傳進(jìn)度

    SpringBoot+vue 大文件分片下載 Blob File spark-md5根據(jù)文件內(nèi)容生成hash 大文件分片上傳(批量并發(fā),手動(dòng)上傳)vue組件封裝-form組件 vue上傳大文件/視頻前后端(java)代碼 springboot+vue自定義上傳圖片及視頻 SpringBoot + VUE實(shí)現(xiàn)前臺(tái)上傳文件獲取實(shí)時(shí)進(jìn)度( 使用commons-fileupload設(shè)置上傳監(jiān)聽

    2024年02月05日
    瀏覽(68)
  • 微信小程序是如何上傳文件以及下載文件

    微信小程序可以使用wx.uploadFile() API來上傳文件,使用wx.downloadFile() API來下載文件。 上傳文件的步驟如下: 1、創(chuàng)建一個(gè)選擇文件的按鈕。 2、用戶點(diǎn)擊按鈕后,調(diào)用wx.chooseImage()方法來選擇文件。 3、調(diào)用wx.uploadFile()方法上傳文件。 示例代碼如下: 下載文件的步驟如下: 1、創(chuàng)

    2024年02月11日
    瀏覽(22)
  • java fastdfs實(shí)現(xiàn)文件(圖片)的上傳下載
  • 微信小程序文件上傳、下載和圖片處理、文件操作API的使用

    微信小程序文件上傳、下載和圖片處理、文件操作API的使用

    這次按照我的理解來做這部分的筆記 首先,復(fù)習(xí)上節(jié)課所學(xué)的內(nèi)容。就是網(wǎng)絡(luò)請求api的使用 ?現(xiàn)在我有一個(gè)需求就是點(diǎn)擊按鈕實(shí)現(xiàn)獲取后端返回的圖片 ?先打開服務(wù)器 ?看一下我們要返回的圖片路徑 ?書寫結(jié)構(gòu) ?看一下返回來的數(shù)據(jù)。是在data下的banners里。因此我們封裝一下

    2024年02月04日
    瀏覽(30)
  • Java 使用OSS 文件上傳+下載 簡單入門

    官方SDK文檔:Java對象/文件_對象存儲(chǔ)-阿里云幫助中心?? ????????阿里云對象存儲(chǔ)OSS(Object Storage Service)為您提供基于網(wǎng)絡(luò)的數(shù)據(jù)存取服務(wù)。使用OSS,可以通過網(wǎng)絡(luò)隨時(shí)存儲(chǔ)和調(diào)用包括文本、圖片、音視頻在內(nèi)的各類數(shù)據(jù)文件;可以通過OSS控制臺(tái)創(chuàng)建Bucket,并將文件上傳

    2024年02月10日
    瀏覽(26)
  • SpringBoot 如何實(shí)現(xiàn)文件上傳和下載

    SpringBoot 如何實(shí)現(xiàn)文件上傳和下載

    當(dāng)今Web應(yīng)用程序通常需要支持文件上傳和下載功能,Spring Boot提供了簡單且易于使用的方式來實(shí)現(xiàn)這些功能。在本篇文章中,我們將介紹Spring Boot如何實(shí)現(xiàn)文件上傳和下載,同時(shí)提供相應(yīng)的代碼示例。 Spring Boot提供了Multipart文件上傳的支持。Multipart是HTTP協(xié)議中的一種方式,用

    2024年02月15日
    瀏覽(39)
  • 【springboot項(xiàng)目開發(fā)】文件上傳與下載

    【springboot項(xiàng)目開發(fā)】文件上傳與下載

    目錄 總體介紹 文件上傳 介紹 文件上傳的前端需求 文件上傳的前端代碼 文件上傳的后端需求 文件上傳的后端代碼 文件下載 介紹 前端需求 前端代碼 后端需求 后端代碼 文件的上傳和下載功能,是項(xiàng)目開發(fā)過程中比較常見的業(yè)務(wù)需求,我們在客戶端被展現(xiàn)的視覺效果通過如

    2024年02月08日
    瀏覽(92)
  • SpringBoot整合Minio實(shí)現(xiàn)文件上傳、下載

    SpringBoot整合Minio實(shí)現(xiàn)文件上傳、下載

    SpringBoot整合Minio實(shí)現(xiàn)文件上傳、下載: 1,介紹高性能分布式存儲(chǔ)文件服務(wù)Minio:Minio是 基于Go語言編寫的對象存儲(chǔ)服務(wù) , 適合于存儲(chǔ)大容量非結(jié)構(gòu)化的數(shù)據(jù) ,例如 圖片、音頻、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等 ,而一個(gè)對象文件可以是任意大小,從幾kb到最

    2024年02月06日
    瀏覽(34)
  • SpringBoot整合Hutool實(shí)現(xiàn)文件上傳下載

    我相信我們在日常開發(fā)中,難免會(huì)遇到對各種媒體文件的操作,由于業(yè)務(wù)需求的不同對文件操作的代碼實(shí)現(xiàn)也大不相同 maven配置 文件類 文件接口? 配置靜態(tài)資源映射

    2024年02月02日
    瀏覽(26)
  • SpringBoot+MinIO 實(shí)現(xiàn)文件上傳、讀取、下載、刪除

    一、 MinIO 二、 MinIO安裝和啟動(dòng) 三、 pom.xml 四、 applicatin.properties(配置文件) 五、 編寫Java業(yè)務(wù)類

    2024年02月09日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包