码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringMvc第四战-【SpringMvc文件上传,下载】


    目录

    一.SpringMvc文件上传

    1.导入依赖(在pom.xml中)

    2.配置文件上传解析器(在spring-mvc.xml中)

    3.前端标记多功能表单(构建一个jsp界面来操作)

    4.将文件写出流,然后写入服务器

    5.配置映射地址(硬盘和网络地址的映射)

    5.1硬盘路径

    5.2服务器路径

    ​编辑 

    6.在resource包咯构建一个类用于映射

    7.效果图形式

    二.文件下载 

    1.编写方法用于图片下载

    2.在list.jsp增加一个图片下载的点击事件

    3.展示效果图

    三..jrebel的使用

    1.安装jrebel插件

    2.打开代理ReverseProxy_windows_amd64.exe(顺序不能错)

    3.jrebel启动项目

    4.启动时要输入UUID

    5.设置jrebel离线(不需要打开打理)

    6.再次jrebel启动项目即可运行

    四.多文件上传

    1.编写用于多文件上传的语句

    2.在upload.jsp增加用于多文件上传的from表单

    3.运行结果


    前言:

    小编详细的向读者展示了:如在新建一个Maven项目的情况下去搭建一个Springmvc ,mybatis,maven集成然后实现SpringMvc的CRUD,以及对于效果图的展示!本次小编带来的的关于文件的上传以及下载!

    一.SpringMvc文件上传

    1.导入依赖(在pom.xml中)

    1. <dependency>
    2. <groupId>commons-fileuploadgroupId>
    3. <artifactId>commons-fileuploadartifactId>
    4. <version>1.3.3version>
    5. dependency>

    2.配置文件上传解析器(在spring-mvc.xml中)

    1. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    2. <property name="defaultEncoding" value="UTF-8">property>
    3. <property name="maxUploadSize" value="52428800">property>
    4. <property name="resolveLazily" value="true"/>
    5. bean>

    3.前端标记多功能表单(构建一个jsp界面来操作)

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: lzzxq
    4. Date: 2023/9/9
    5. Time: 14:26
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. 书籍头像上传
    10. "${pageContext.request.contextPath}/book/upload" method="post" enctype="multipart/form-data">
    11. "text" name="bid" readonly="readonly" value="${param.bid}"/>
    12. "file" name="xxx"/>
    13. "submit" value="上传图片"/>

    4.将文件写出流,然后写入服务器

    后端利用muiltpartFile类,接收前端传递到后端的文件

    1. @RequestMapping("/upload")
    2. //头像上传
    3. public String upload(Book book,MultipartFile xxx){
    4. try {
    5. //上传的图片存放地址
    6. String dir=PropertiesUtil.getValue("dir");
    7. // 网络访问地址
    8. String server=PropertiesUtil.getValue("server");
    9. String filename = xxx.getOriginalFilename();
    10. System.out.println("文件名:"+filename);
    11. System.out.println("文件类型:"+xxx.getContentType());
    12. FileUtils.copyInputStreamToFile(xxx.getInputStream(),new File(dir+filename));
    13. //修改字段名的属性
    14. book.setBname(server+filename);
    15. bookBiz.updateByPrimaryKeySelective(book);
    16. } catch (IOException e) {
    17. e.printStackTrace();
    18. }
    19. return "redirect:list";
    20. }

    5.配置映射地址(硬盘和网络地址的映射)

    5.1硬盘路径

    5.2服务器路径

     

    6.在resource包咯构建一个类用于映射

    7.效果图形式

    二.文件下载 

    1.编写方法用于图片下载

    1. //文件下载
    2. @RequestMapping(value="/download")
    3. public ResponseEntity<byte[]> download(Book book, HttpServletRequest req){
    4. try {
    5. //先根据文件id查询对应图片信息
    6. Book bk=this.bookBiz.selectByPrimaryKey(book.getBid());
    7. String diskPath = PropertiesUtil.getValue("dir");
    8. String reqPath = PropertiesUtil.getValue("server");
    9. String realPath = bk.getBname().replace(reqPath,diskPath);
    10. String fileName = realPath.substring(realPath.lastIndexOf("/")+1);
    11. //下载关键代码
    12. File file=new File(realPath);
    13. HttpHeaders headers = new HttpHeaders();//http头信息
    14. String downloadFileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");//设置编码
    15. headers.setContentDispositionFormData("attachment", downloadFileName);
    16. headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    17. //MediaType:互联网媒介类型 contentType:具体请求中的媒体类型信息
    18. return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK);
    19. }catch (Exception e){
    20. e.printStackTrace();
    21. }
    22. return null;
    23. }

    2.在list.jsp增加一个图片下载的点击事件

     "${pageContext.request.contextPath }/book/download?bid=${b.bid}">图片下载

    3.展示效果图

    三..jrebel的使用

    1.安装jrebel插件

    2.打开代理ReverseProxy_windows_amd64.exe(顺序不能错)

    3.jrebel启动项目

    4.启动时要输入UUID

    第一行输入:  http://127.0.0.1:8888/GUID

    其次在浏览器输入

    GUID online erstellen Kostenloses Tool, um global eindeutige Nummern (GUIDs) zu generierenicon-default.png?t=N7T8https://www.guidgen.com/

     

    在将GUID赋值GUID到网址前面 

    5.设置jrebel离线(不需要打开打理)

    6.再次jrebel启动项目即可运行

    四.多文件上传

    1.编写用于多文件上传的语句

    1. //多文件上传
    2. @RequestMapping("/uploads")
    3. public String uploads(HttpServletRequest req, Book book, MultipartFile[] files){
    4. try {
    5. StringBuffer sb = new StringBuffer();
    6. for (MultipartFile cfile : files) {
    7. //思路:
    8. //1) 将上传图片保存到服务器中的指定位置
    9. String dir = PropertiesUtil.getValue("dir");
    10. String server = PropertiesUtil.getValue("server");
    11. String filename = cfile.getOriginalFilename();
    12. FileUtils.copyInputStreamToFile(cfile.getInputStream(),new File(dir+filename));
    13. sb.append(filename).append(",");
    14. }
    15. System.out.println(sb.toString());
    16. } catch (Exception e) {
    17. e.printStackTrace();
    18. }
    19. return "redirect:list";
    20. }

    2.在upload.jsp增加用于多文件上传的from表单

    1. "post" action="${pageContext.request.contextPath}/book/uploads" enctype="multipart/form-data">
    2. "file" name="files" multiple>

    3.运行结果

  • 相关阅读:
    C++11
    mysql安装
    Abaqus运行fortan报错:“Error in job Job-1: Problem during compilation - D:\test.for”
    【Vue】vue2 封装 echarts 基础组件,直接传 option 即可
    CentOS 7 安装 openGauss 3.0 企业版(单节点)
    UE4动作游戏实例RPG Action解析二:GAS系统播放武器绑定的技能,以及GE效果
    Python pip 替换国内镜像源
    Pandas知识点超全总结
    贪心算法---The best time to buy and sell store-ii
    Hexagon_V65_Programmers_Reference_Manual(14)
  • 原文地址:https://blog.csdn.net/lz17267861157/article/details/132775380
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号