欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC深入講解文件的上傳下載實(shí)現(xiàn)

 更新時(shí)間:2022年06月21日 10:29:58   作者:llp1110  
這篇文章主要為大家詳細(xì)介紹了springMVC實(shí)現(xiàn)文件上傳和下載的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

SpringMVC文件下載

說明: 在 SpringMVC 中,通過返回 ResponseEntity的類型,可以實(shí)現(xiàn)文件下載的功能

案例演示

1.修改 json.jsp

<h1>下載文件的測(cè)試 </h1>
<a href="<%=request.getContextPath()%>/downFile" rel="external nofollow" >點(diǎn)擊下載文件</a>

? 2.修改 JsonHandler.java, 增加方法

    /**
     * 響應(yīng)用戶下載文件的請(qǐng)求
     */
    @RequestMapping(value = "/downFile")
    public ResponseEntity<byte[]> downFile(HttpSession session)
            throws Exception {
        //C:\ide\IdeaProjects\llp-springmvc\out\artifacts\llp_springmvc_war_exploded\img
        //獲取文文件真實(shí)運(yùn)行的目錄
//        String realPath = session.getServletContext().getRealPath("/img");
        //1. 先獲取到下載文件的inputStream
        InputStream resourceAsStream =
                session.getServletContext().getResourceAsStream("/img/2.jpg");
        //2. 開辟一個(gè)存放文件的byte數(shù)組, 這里老師使用byte[] 是可以支持二進(jìn)制數(shù)據(jù)(圖片,視頻。)
        byte[] bytes = new byte[resourceAsStream.available()];
        //3. 將下載文件的數(shù)據(jù),讀入到byte[]
        resourceAsStream.read(bytes);
        //4.添加Header頭
        HttpHeaders httpHeaders = new HttpHeaders();
        //指定返回的數(shù)據(jù),客戶端應(yīng)當(dāng)以附件形式處理 一般有兩種方式: inline:直接在頁面顯示 attchment:以附件形式下載
        httpHeaders.add("Content-Disposition", "attachment;filename=2.jpg");
        //5.返回的HttpStatus
        return new ResponseEntity<>(httpHeaders, HttpStatus.OK);
    }

? 3.在web目錄放入img圖片

文件下載響應(yīng)頭的設(shè)置 content-type 指示響應(yīng)內(nèi)容的格式 content-disposition 指示如何處理響應(yīng)內(nèi)容。

一般有兩種方式: inline:直接在頁面顯示 attchment:以附件形式下載

SpringMVC文件上傳

1.基本介紹

基本介紹

  • Spring MVC 為 文 件 上 傳 提 供 了 直 接 的 支 持 , 這 種 支 持 是 通 過 即 插 即 用 的 MultipartResolver 實(shí) 現(xiàn) 的 。 Spring 用 Jakarta Commons FileUpload 技 術(shù) 實(shí) 現(xiàn) 了 一 個(gè) MultipartResolver 實(shí)現(xiàn)類:CommonsMultipartResovler
  • Spring MVC 上下文中默認(rèn)沒有裝配 MultipartResovler,因此默認(rèn)情況下不能處理文件的 上傳工作,如果想使用 Spring 的文件上傳功能,需現(xiàn)在上下文中配置 MultipartResolver
    <!--配置文件上傳需要的bean,這里id不能亂寫,CommonsMultipartResolver是MultipartResolver接口的實(shí)現(xiàn)類,底層是按照接口來裝配的-->
    <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
          id="multipartResolver"/>

2.需求分析/圖解

3.應(yīng)用實(shí)例

引入 springmvc 文件上傳需要的 jar 包

創(chuàng)建 \web\fileUpload.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上傳</title>
</head>
<body>
<h1>文件上傳的演示</h1>
<%--
這里action有兩種填寫方式,
第一種:獲取當(dāng)前工程路徑 /springmvc/fileupload 這里第一個(gè)斜杠在瀏覽器端會(huì)被解析成ip:port ===》 ip:port/springmvc/fileupload
action=<%=request.getContextPath()%>/fileUpload
action=fileUpload  我們通過 http://localhost:8080/springmvc/fileUpload.jsp頁面提交發(fā)起請(qǐng)求,如果不填寫斜杠,
會(huì)將fileupload拼接到  http://localhost:8080/springmvc/后面
--%>
<form action="<%=request.getContextPath()%>/fileUpload" method="post" enctype="multipart/form-data">
    文件介紹:<input type="text" name="introduce"><br>
    選擇文件:<input type="file" name="file"><br>
    <input type="submit" value="上傳文件">
</form>
</body>
</html>

創(chuàng)建FileUploadHandler.java

@Controller
public class FileUploadHandler {
    /**
     * 文件上傳
     * @param file 客戶端上傳的文件
     * @param request 這里在目標(biāo)方法添加HttpServletRequest 主要是為了將文件保存到工程路徑中
     * @return
     */
    @RequestMapping(value = "/fileUpload")
    public String fileUpload(@RequestParam(value = "file") MultipartFile file,
                             HttpServletRequest request, String introduce) throws IOException {
        //接收到提交的文件名
        String originalFilename = file.getOriginalFilename();
        System.out.println("你上傳的文件名= " + originalFilename);
        System.out.println("introduce=" + introduce);
        //得到要把上傳文件保存到哪個(gè)路徑[全路徑:包括文件名]
        String fileFullPath =
                request.getServletContext().getRealPath("/img/" + originalFilename);
        //創(chuàng)建目標(biāo)文件
        File saveToFile = new File(fileFullPath);
        //將上傳的文件,轉(zhuǎn)存到saveToFile(目標(biāo)文件:我們希望文件存放的位置)
        file.transferTo(saveToFile);
        return "success";
    }
}

瀏覽器測(cè)試

PostMan測(cè)試

4.Debug-file.transferTo(目標(biāo)文件)

transferTo函數(shù)會(huì)將客戶端文件寫入到臨時(shí)文件中,C:\Users\asus\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_llp-springmvc\work\Catalina\localhost\springmvc\upload_6889b5a3_a1f5_4bba_a16e_a8dc15b12b87_00000001.tmp

在將文件寫入到目標(biāo)文件

在實(shí)際開發(fā)中我們可以將文件寫入到服務(wù)器的目錄中,通過nginx對(duì)文件進(jìn)行映射,這樣在瀏覽器中就可以正常的顯示我們上傳的文件了

到此這篇關(guān)于SpringMVC深入講解文件的上傳下載實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringMVC上傳下載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java編程下字符串的16位,32位md5加密實(shí)現(xiàn)方法

    java編程下字符串的16位,32位md5加密實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava編程下字符串的16位,32位md5加密實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java并發(fā)編程之淺談ReentrantLock

    Java并發(fā)編程之淺談ReentrantLock

    今天帶大家學(xué)習(xí)Java并發(fā)編程的相關(guān)知識(shí),文中對(duì)Java ReentrantLock作了非常詳細(xì)的圖文示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法

    Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法

    這篇文章主要介紹了Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法,詳細(xì)分析了基于Hibernate執(zhí)行批量添加操作的具體步驟與相關(guān)實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-03-03
  • Mybatis中的Criteria條件查詢方式

    Mybatis中的Criteria條件查詢方式

    這篇文章主要介紹了Mybatis中的Criteria條件查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 解決IDEA項(xiàng)目project包目錄消失的問題

    解決IDEA項(xiàng)目project包目錄消失的問題

    這篇文章主要介紹了解決IDEA項(xiàng)目project包目錄消失的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • IntelliJ?IDEA?2022安裝注冊(cè)永久激活

    IntelliJ?IDEA?2022安裝注冊(cè)永久激活

    java開發(fā)工具IntelliJ?IDEA深受用戶喜愛,很多朋友對(duì)這個(gè)idea開發(fā)工具比較忠心,一旦有新版本發(fā)出,很多小伙伴就迫不及待的想更新,今天小編給大家?guī)砹薸dea2022.1最新永久激活碼,親測(cè)有效,喜歡的朋友快來下載體驗(yàn)吧
    2022-08-08
  • 一文詳解Java攔截器與過濾器的使用

    一文詳解Java攔截器與過濾器的使用

    這篇文章主要為大家詳細(xì)介紹了Java中攔截器與過濾器的使用與區(qū)別,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定參考價(jià)值,需要的可以參考一下
    2022-04-04
  • tomcat部署java web項(xiàng)目遇到的問題及解決方法

    tomcat部署java web項(xiàng)目遇到的問題及解決方法

    這篇文章主要介紹了tomcat部署java web項(xiàng)目遇到的問題及解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 基于Cookie與Session的Servlet?API會(huì)話管理操作

    基于Cookie與Session的Servlet?API會(huì)話管理操作

    這篇文章主要為大家介紹了基于Cookie與Session的Servlet?API會(huì)話管理操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • SpringBoot+Redis實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)的示例

    SpringBoot+Redis實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)的示例

    本文將結(jié)合實(shí)例代碼,介紹SpringBoot+Redis實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評(píng)論