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

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

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

SpringMVC文件下載

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

案例演示

1.修改 json.jsp

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

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

    /**
     * 響應(yī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. 開辟一個存放文件的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) 了 一 個 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 這里第一個斜杠在瀏覽器端會被解析成ip:port ===》 ip:port/springmvc/fileupload
action=<%=request.getContextPath()%>/fileUpload
action=fileUpload  我們通過 http://localhost:8080/springmvc/fileUpload.jsp頁面提交發(fā)起請求,如果不填寫斜杠,
會將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);
        //得到要把上傳文件保存到哪個路徑[全路徑:包括文件名]
        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";
    }
}

瀏覽器測試

PostMan測試

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

transferTo函數(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對文件進(jìn)行映射,這樣在瀏覽器中就可以正常的顯示我們上傳的文件了

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

相關(guān)文章

  • Apache Shrio安全框架實(shí)現(xiàn)原理及實(shí)例詳解

    Apache Shrio安全框架實(shí)現(xiàn)原理及實(shí)例詳解

    這篇文章主要介紹了Apache Shrio安全框架實(shí)現(xiàn)原理及實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • java排序算法圖文詳解

    java排序算法圖文詳解

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之歸并排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望可以對你有所幫助
    2021-07-07
  • Java使用Cipher類實(shí)現(xiàn)加密的過程詳解

    Java使用Cipher類實(shí)現(xiàn)加密的過程詳解

    這篇文章主要介紹了Java使用Cipher類實(shí)現(xiàn)加密的過程詳解,Cipher類提供了加密和解密的功能,創(chuàng)建密匙主要使用SecretKeySpec、KeyGenerator和KeyPairGenerator三個類來創(chuàng)建密匙。感興趣可以了解一下
    2020-07-07
  • Java Socket編程實(shí)例(二)- UDP基本使用

    Java Socket編程實(shí)例(二)- UDP基本使用

    這篇文章主要講解Java Socket編程中UDP的基本使用,希望能給大家做一個參考。
    2016-06-06
  • 如何在Maven項(xiàng)目中運(yùn)行JUnit5測試用例實(shí)現(xiàn)

    如何在Maven項(xiàng)目中運(yùn)行JUnit5測試用例實(shí)現(xiàn)

    這篇文章主要介紹了如何在Maven項(xiàng)目中運(yùn)行JUnit5測試用例實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • JAVA maven項(xiàng)目使用釘釘SDK獲取token、用戶

    JAVA maven項(xiàng)目使用釘釘SDK獲取token、用戶

    這篇文章主要介紹了JAVA maven項(xiàng)目使用釘釘SDK獲取token、用戶,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java語法糖之個數(shù)可變的形參的實(shí)現(xiàn)

    Java語法糖之個數(shù)可變的形參的實(shí)現(xiàn)

    這篇文章主要介紹了Java語法糖之個數(shù)可變的形參的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java 線程死鎖的問題解決辦法

    Java 線程死鎖的問題解決辦法

    這篇文章主要介紹了 Java 線程死鎖的問題解決辦法的相關(guān)資料,希望通過本大家能幫助到大家,遇到類似問題能夠解決,需要的朋友可以參考下
    2017-09-09
  • SpringBoot Actuator未授權(quán)訪問漏洞解決方案

    SpringBoot Actuator未授權(quán)訪問漏洞解決方案

    工作的時候遇到過提示Spring Boot后端存在Actuator未授權(quán)訪問漏洞,網(wǎng)上有很多詳細(xì)的解釋文章,在這里做一個簡單的總結(jié)、介紹和分享,需要的朋友可以參考下
    2023-09-09
  • java 學(xué)習(xí)筆記(入門篇)_java程序helloWorld

    java 學(xué)習(xí)筆記(入門篇)_java程序helloWorld

    安裝配置完Java的jdk,下面就開始寫第一個java程序--hello World.用來在控制臺輸出“Hello World”,接下來詳細(xì)介紹,感興趣的朋友可以參考下
    2013-01-01

最新評論

江阴市| 田林县| 花垣县| 遂昌县| 遂平县| 延长县| 桑日县| 中牟县| 桑日县| 平湖市| 城固县| 新邵县| 明溪县| 云林县| 九寨沟县| 昌吉市| 育儿| 南宁市| 三河市| 东平县| 阿克| 汉阴县| 沁阳市| 夹江县| 策勒县| 临邑县| 陕西省| 霍城县| 阜城县| 西城区| 酉阳| 忻州市| 金坛市| 芮城县| 库伦旗| 莲花县| 衡阳县| 弋阳县| 宜兴市| 白河县| 汤阴县|