springMVC文件上传与下载

【SpringMVC笔记11】SpringMVC实现文件上传和下载 文件上传是实际开发过程中,经常会遇见的需求,例如:上传excel文件,上传word文档,上传pdf文件等等,SpringMVC框架也是支持文件上传功能的,SpringMVC框架是通过第三方依赖实现的文件上传功能,第三方依赖是由Apache提供的Commons FileUploads。...... 阅读详情

在jsp页面中

文件上传:
	<!-- enctype表示多功能表单 -->
	<form action="${pageContext.request.contextPath}/file/up.action" method="post" enctype="multipart/form-data">
	    头像:<input type="file" name="myfile"/>
	    <input type="submit"/>
	</form>
	
	<img src="${pageContext.request.contextPath}${imgsrc}">
	<br/>
	文件下载
	<a href="${pageContext.request.contextPath}/file/down.action?fileName=111.jpg">下载111.jpg</a>

spring.xml文件中需要如下配置:(5242880表示的是5M的大小)

<!-- 文件上传解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<property name="maxUploadSize">
	<value>5242880</value>
	</property>
	</bean>

创建一个文件上传的类如下:

package com.zy.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/file")
public class FileController {
	//辅助方法
	//1根据逻辑路径得到真实路径
	@SuppressWarnings("deprecation")  //逻辑路径
	public String myGetRealPath(String path,HttpServletRequest request){
		
		String realPath = request.getRealPath(path);
		System.out.println("真实路径:"+realPath);
		
		File file = new File(realPath);
		if(!file.exists()){//如果不存在就创建一个
		 file.mkdirs();	
		}
		
		return realPath;
	}
	//2更改文件名
	public String newFileName(MultipartFile file){//参数是文件对象
		String originalFilename = file.getOriginalFilename();
	    //abc.jpg
		//截取后缀,拼接新的文件名
		//后缀
		String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
		//新文件名要求:上传中-防止文件名重复,发生覆盖
		String uu = UUID.randomUUID().toString();
		
		String newName=uu+substring;
		return  newName;
		
	}
	//上传--//如果controller只需要跳转页面的话,可以把返回值写成String
	@SuppressWarnings("resource")
	@RequestMapping("/up")
	public String up(MultipartFile myfile,HttpServletRequest request) throws Exception{
		//得到真实路径
		String path="/img";//逻辑路径
		String myGetRealPath = myGetRealPath(path, request);
		//得到新的文件名
		String newFileName = newFileName(myfile);
		
		//上传本质---把本地文件按流的方式copy到服务上
		//输入流
		InputStream inputStream = myfile.getInputStream();
		//输出流
		FileOutputStream fileOutputStream = new FileOutputStream(myGetRealPath+"/"+newFileName);
		
		//copy
		IOUtils.copy(inputStream, fileOutputStream); //结束
		
		//关闭资源
		inputStream.close();
		fileOutputStream.close();
		
		//回显图片
		request.setAttribute("imgsrc", path+"/"+newFileName);
		return "/index.jsp";
		
	}
	
	//图片下载
	@RequestMapping("/down")
	public void down(HttpServletResponse response,String fileName,HttpServletRequest request) throws IOException {
		//设置头---- 下载和预览的区别,下载需要加上attachment
		response.setHeader("Content-Disposition", "attachment;fileName="+fileName);
		//下载的本质--文件按流的方式用服务器copy到本地
		//得到资源在服务器的真实路径
		String path = "/aaa/" + fileName;
		
		String myGetRealPath = myGetRealPath(path, request);
		//创建输入流
		FileInputStream fileInputStream = new FileInputStream(myGetRealPath);
		//输出流
		ServletOutputStream outputStream = response.getOutputStream();
		
		IOUtils.copy(fileInputStream, outputStream);
		//关闭资源
		fileInputStream.close();
		outputStream.close();
	}

}

 

 

 

 

 

Qt OpenGL 3D 点云数据显示 在Qt中使用OpenGL显示3D点云数据是一个常见的需求,特别是在计算机视觉、机器人学和三维重建等领域。下面我将介绍一个基本的实现方案。 阅读详情

相关推荐

ESP32 BLE Mesh Provisioner实战:手把手教你用ESP-IDF配网智能灯泡(附常见错误排查)

本文提供了一份基于ESP-IDF的ESP32 BLE Mesh Provisioner实战指南,详细解析了配网器的核心角色与工作流程。文章手把手教你从工程搭建、代码初始化到核心回调解析,并重点针对常见的‘Model not bound to AppKey’等错误提供了深度排查思路与解决方案,帮助你构建一个稳定可靠的智能照明网关。

desk3的博客 513

图片上传前后端交互

实现:进行路径映射,使用Jquery Ajax技术发送异步请求 html: <div class="tupian"> <span>图片:</span> <!--存放上传显示的图片--> <img src="${ctx }${user.imgUrl }" id="img" height="50"> <!-...

小庄的博客 2545

PCA9698嵌入式C++驱动库:高性能I²C GPIO扩展方案

GPIO扩展是嵌入式系统中解决MCU引脚资源不足的关键技术,其核心原理在于通过串行总线(如I²C)桥接主控与外设寄存器,实现逻辑引脚到物理IO的映射与状态同步。技术价值体现在低开销、高确定性与多设备可扩展性,广泛应用于工业控制、传感器节点和LED矩阵驱动等实时场景。本文聚焦PCA9698——一款支持24通道双向IO、中断输出与可编程驱动模式的I²C GPIO扩展芯片,结合其C++驱动库的影子寄存器机制、端口级原子操作及非阻塞同步设计,提供面向资源受限平台(如ATmega2560)的工程就绪方案。

weixin_35756637的博客 626

<img src="中文文件名" /> 无法显示图片,图片名改成英文就可以显示;试了下在电脑桌面写了个HTML测试下,可以显示中文名称的图片,解决方法

解决方案:Tomcat5的http Connector所用的URI解码默认用的是 ISO-8859-1,一般浏览器默认用的发送编码为UTF-8,  在server.xml中类似如下配置:     ……   URIEncoding="UTF-8" / >   其中URIEncoding="UTF-8"这项,其含义是指定URI的编码为:UTF-8。 在后面加上这一项后问题就可以解决了

congcongsuiyue的专栏 3439

别再手动对照了!用Python+ArcGIS Pro一键搞定三调数据转土地三大类

本文介绍如何利用Python和ArcGIS Pro实现三调数据向土地三大类的自动化转换,大幅提升国土空间规划和土地变更调查的工作效率。通过封装分类规则为Python函数并集成到ArcGIS Pro脚本工具中,解决了传统手动操作耗时且易错的问题,适用于大规模数据处理场景。

weixin_29081101的博客 304

一文读懂AI大模型时代的RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性

awei0916的专栏 2118

SpringMVC | SpringMVC中的 “文件上传和下载”

目录: 一、文件上传 1.1 文件上传“概述” 1.2 文件上传“具体配置” : “前端”中配置“文件上传” ( type=“file” + 满足3个条件 ) “后端”中配置“文件上传” ( 配置id为“CommonsMultipartResolver”的bean + 配置“文件上传”的“约束条件” + 通过“MultipartFile接口”参数接收“传来的文件”) 1.3 文件上传“应用案例” : 文件上传 (存储在“相对路径”) 文件上传 (存储在“绝对路径”) 二、文件下载 .....

m0_70720417的博客 3270

攻克+86手机号Discord验证墙:从“无效”到“成功”的实战指南

本文提供了一份针对+86手机号在Discord注册时频繁遭遇“手机号无效”问题的实战解决指南。文章系统分析了问题根源,并分步详解了从打造纯净网络环境、尝试多种手机号格式(如+86前加0),到更换iOS等客户端设备的有效方法,旨在帮助用户成功完成Discord手机号验证。

mac99的博客 1108

【SpringMvc】SpringMvc文件上传与下载

文章目录文件上传1 前端代码2 路径配置3 Controller4 外部访问配置`ResourceHandler`文件下载完整代码1 WebConfig2 UpLoadAndDownLoadController3 Maven依赖 文件上传 1 前端代码 <form action="http://127.0.0.1:8080/upload" enctype="multipart/form-data" method="post"> 上传文件<input type="file" name

你好丶下一秒 419

YOLOv11改进 | Conv改进篇 | 含2种改进,引入DynamicConv替换普通Conv卷积下采样和C3k2_DynamicConv替换C3k2(来自CVPR2024)

本文提出了一种基于DynamicConv动态卷积优化的YOLOv11轻量化模型改进方案。通过引入多专家机制的动态卷积模块,在增加模型参数量的同时保持较低的计算复杂度(FLOPs),有效解决了低FLOPs模型在大规模预训练中的性能瓶颈问题。文章详细介绍了动态卷积的工作原理、核心代码实现,并提供了在YOLOv11中集成DynamicConv和C3k2_GhostModule_DynamicConv模块的完整教程,包括模块添加、配置文件修改和模型训练验证过程。实验结果表明,该方案在保持高效推理速度的同时显著提升了

Ai缝合怪、助力小伙伴高效发论文 537

第五章 TTM 后备管理:5.6系统内存域

系统内存域由 TTM 内置资源管理器管理,通过 ttm_tt 承载页信息,依赖 ttm_pool 提供物理页。ttm_tt 管理页数组、缓存属性与状态标志,支持外部页与换出机制。初始化分 ttm_tt_init 与 ttm_sg_tt_init,生命周期包括创建、填充、释放与销毁。页池针对 write-combined、uncached 及一致性 DMA 分配的页进行缓存,提升性能并减少 TLB 刷新。分配时高阶优先、批量设置缓存属性,回收时清零后归还池中,确保高效复用。

图形/计算GPU的驱动与虚拟化技术分享园地 2561

SpringMVC实现文件上传和下载

在实际的项目开发中,文件的上传和下载可以说是最常用的功能之一,例如图片的上传与下载、邮件附件的上传和下载等。本篇我们将对 Spring MVC 中的文件上传和文件下载功能进行分享。

weixin_65644655的博客 2072

【学习系列】SAP RAP 1:关于RAP的一些基本介绍

摘要:SAP RAP和CAP是两种不同的开发模型。RAP(RESTful ABAP)用于在S/4HANA等ABAP平台上构建现代业务应用,基于CDS+OData,适合ABAP开发者扩展核心业务。CAP(云应用编程模型)是BTP上的云原生框架,支持Node.js/Java,适合构建跨系统集成应用。RAP优势在于与S/4HANA深度集成,CAP则更灵活,支持多云环境。选择依据主要取决于开发平台(S/4HANA或BTP)、技术栈(ABAP或Node.js/Java)及应用场景(核心扩展或云原生开发)。

DeveloperMrMeng的博客 1161

SpringMvc文件上传与下载

在开发过程中,我们难免遇到提交文件的情况,本篇文章将详细为大家讲解文件上传,以及上传过程中的注意事项。 案例:添加图书并同时提交图书封面在页面中显示 目录 一、案例准备: 1.1 前端提交文件注意事项 1.2 控制器接受数据和文件的注意事项 二、控制器接收文件: 三、显示图书封面: 3.1 后端传值 3.2 前端接收“封面信息” 一、案例准备: 1.1 前端提交文件注意事项: 表单提交方式为post 表单的设置为“非压缩传输”,enctype="...

WuHuaSen的博客 1797

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能

接下来一起探索一下SpringMVC上传以及下载文件的功能实现!!!到了文章的尾声,咱们这一期的分享结束,下期见!!!

狮子也疯狂的博客 2160

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SpringMVC文件上传和下载

将要下载的文件以字节流的形式写入到响应的输出流中,即通过使用 response.getOutputStream().write(byteArray) 将文件内容返回给客户端。在控制器方法中,可以通过专门的文件处理逻辑来处理上传的文件。电子商务平台:商家可以上传产品图片,用户可以下载产品说明书、用户手册等。医疗系统:医生可以上传检查报告、影像资料,患者可以下载自己的健康档案。在线教育平台:教师可以上传课件、资料,学生可以下载学习资料、作业等。企业应用:员工可以上传和下载团队文件、报告、表格以及其他工作文档。

时间如瑾 代码如诗 1612

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SpringMVC框架 |文件下载与文件上传

文章目录一、SpringMVC支持文件下载二、SpringMVC支持文件上传1.导入文件上传的两个jar包2.index.jsp前端页面3.配置文件上传解析器4.文件上传请求处理三、多文件上传 一、SpringMVC支持文件下载 假设要下载项目中的jQuery-3.4.1.js文件。 @RequestMapping("/download") public ResponseEntity<...

匿名攻城狮 4703

SpringMVC之文件上传与下载

文件上传需要注意的点: 1.文件大小 2.上传速度 3.编码格式 SpringMVC文件上传步骤: 1.修改form表单上传方式 2.指定编码数据格式为文件上传 3.在配置文件中配置文件上传解析器,上传文件的大小,每次缓存文件的大小,默认编码等 4.编写controller核心代码,调用service将文件上传到服务器 文件上传的注意点: 1.form表单请求必须是post,并且enctype=“multipart/form-data” 2.文件上传解析的ID要求必须是multipartResolver 3

小郑要做干饭人的博客 314

六、SpringMVC实现文件上传下载

SpringMVC-servlet.xml 使用springMVC来处理文件上传和下载需要添加如下的配置文件,而且id是固定的 可以到org.springframework.web.servlet.DispatcherServlet的源码文件下查看 CommonsMultipartResolver提供三个属性设置,可以跳转到源码开头的注释查看 SpringMVC-servlet.xml中添...

玻璃汽水的博客 7053

SpringMVC 文件上传下载

1.文件上传 Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。 2.文件上传示例: (1) 拷贝jar包 commons-fileupload-1.2.1.jar commons-io-2.0.jar (2) 配置文件上传解析器 <!-- 配置文件上传解析器 id 必须是"multipartResolver",否则,会报错误: --> <bean id="multipartResolver" class="org.spr

程序员学习圈 437

SpringMVC文件上传及下载

SpringMVC文件上传及下载 文件上传及下载是 Web 项目中经常使用的功能,SpringMVC 可以很好地支持文件上传及下载;本节新建 SpringMVC-09-File 项目学习在 SpringMVC 中进行文件上传及下载。 1. 文件上传 1.1 前置知识 文件上传即从客户端向服务器传输数据,所以在客户端也需要有文件传输的支持! 前端页面的表单中的 enctype 属性就是用于设置传输格式的 application/x-www=form-urlencoded:默认方式,只处理表单域中的 valu

qq_43560701的博客 418

【SpringMVC】文件上传与下载、JREBEL使用

它可以让用户上传文件到服务器或者从服务器下载文件。这对于许多Web应用程序来说是必不可少的功能,比如在线存储、文档管理系统等。SpringMVC提供了一些方便的注释和API,可以使文件上传和下载变得非常简单。在文件上传方面,SpringMVC提供了。类,可以轻松地处理上传的文件。在文件下载方面,SpringMVC提供了。在你的spring mvc里面的pom.xml里面添加文件上传的依赖。并且下载,安装成功之后会让你重启,重启之后按操作来。根据自己的表来也是可以的,只是用来保存数据。

无法自律的人的博客 1120

SpringMVC之文件上传下载

在SpringMVC中,文件上传功能可以通过使用解析器来实现。这个解析器需要在Spring配置文件中进行配置。在表单中添加一个标签,并设置对应的表单属性和控制器方法参数。在控制器方法中,使用对象来接收上传的文件。可以通过该对象获取文件名、大小、内容等信息。处理上传的文件,可以将文件保存到本地磁盘或者存储到数据库中,具体操作根据业务需求来决定。在SpringMVC中,文件下载可以通过在控制器方法中设置响应头和输出流来实现。在控制器方法中,设置响应头为attachment;,其中。

djssubddbj的博客 803

SpringMVC 学习(八)之文件上传与下载

传统 Servlet 文件下载方式,需要在 HttpServletResponse response 中设置各种信息,而使用 SpringMVC 的 ResponseEntity 只需要将文件二进制主体、头信息以及状态码设置好即可进行文件下载,在易用性和简洁上更胜一筹。MultipartFile 封装了请求数据中的文件,此时这个文件存储在内存中或临时的磁盘文件中,需要将其转存到一个合适的位置,因为请求结束后临时存储将被清空。,这种编码方式会把文件域指定文件的内容也封装到请求参数中,不会对字符编码。

zjs246813的博客 1516

SpringMVC的文件上传和下载

    SpringMVC会根据请求方法签名的不同,将请求消息中的信息以一定的方式转换并绑定到请求方法的参数中。在请求消息到达真正调用处理方法的这段时间内,SpringMVC还会完成很多其他的工作,包括请求消息转换、数据转换、数据格式化以及数据校验。一:SpringMVC实现文件上传    为了实现文件上上传,必须将表单的method设置为POST,并将enctype设置为multipart/fo...

jz_say的博客 280

springmvc文件上传下载

springmvc文件上传下载1.文件上传2.文件下载3.中文文件名的文件下载4.例子4.1创建一个springmvc项目4.2导入jar包4.3配置web.xml4.4配置springmvc-config.xml4.5编写controller4.6编写枚举4.7编写jsp4.8发布测试 1.文件上传 多数文件上传都是通过表单形式提交给后台服务器的,所以文件上传就必须提供表单实现。 表单必须满足的...

a18792721831的博客 656
上一篇: SpringMVC中四种日期格式的转换
下一篇: 关于mybatis进行update更新时无法提交&update动态sql的使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值