基于SpringMVC的文件上传

创建Maven Project,Group Id值为cn.tedu.spring,Artifact Id为SPRINGMVC-UPLOAD,在配置依赖时,此次需要spring-webmvc依赖,另外,还需要commons-fileupload依赖:

添加依赖

<dependencies>
	<!-- spring-webmvc -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>4.3.9.RELEASE</version>
	</dependency>
	<!-- 文件上传 -->
	<dependency>
		<groupId>commons-fileupload</groupId>
		<artifactId>commons-fileupload</artifactId>
		<version>1.4</version>
	</dependency>
</dependencies>

添加SpringMVC的配置文件

添加web.xml的配置文件

<servlet>
	<servlet-name>SpringMVC</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:a.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
	<servlet-name>SpringMVC</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

设计界面

在webapp下创建index.html,作为用户选择文件上传的界面,该界面中,上传控件必须是,控件所在的表单必须使用POST方式提交请求,且必须配置enctype=“multipart/form-data”,其它部分可以自行设计,例如:

基于SpringMVC的文件上传

请选择您要上传的文件

# 配置MultipartResolver 在Spring的配置文件中添加:

控制器中填写处理的方法

@RequestMapping(“upload.do”)
public String handleUpload(@RequestParam(“file”) MultipartFile file,HttpServletRequest request) {
// 确定上传的文件夹
String dirPath = request.getServletContext().getRealPath(“upload”);
File dir = new File(dirPath);
if (!dir.exists()) {
dir.mkdirs();
}
//确定上传的文件名
String originalFilename = file.getOriginalFilename();
String suffix = “”;
int beginIndex = originalFilename.lastIndexOf(".");
if (beginIndex != -1) {
suffix = originalFilename.substring(beginIndex);
}
String filename = UUID.randomUUID().toString() + suffix;
// 确定上传到服务器,保存到的目标文件
File dest = new File(dir,filename);
System.out.println(file);
// 执行保存
try {
file.transferTo(dest);
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

    return null;
}

MultipartFile相关API

boolean isEmpty()

该方法用于判断上传的文件是否为空,当用户没有选择需要上传的文件,或选中的文件是空文件(0字节)时,该方法返回true,可用于验证:

boolean isEmpty = file.isEmpty();
System.out.println(“isEmpty=” + isEmpty);
if (isEmpty) {
return “error”;
}

long getSize()

该方法用于获取文件的大小,以字节为单位,通常,用于限制上传的文件大小:

long size = file.getSize();
System.out.println(“size=” + size);
if (size > 2 * 1024 * 1024) {
return “error”;
}

String getContentType()

该方法用于获取文件的MIME类型,通常,用于限制上传的文件的类型:

String contentType = file.getContentType();
System.out.println(“contentType=” + contentType);
List types = new ArrayList();
types.add(“image/jpeg”);
types.add(“image/png”);
types.add(“image/gif”);
if (!types.contains(contentType)) {
return “error”;
}
关于各种文件扩展名对应的MIME类型,可以上网查阅,也可以在Tomcat目录中的conf/web.xml文件中查找。

MIME的值,完全取决于文件的扩展名,如果文件的扩展名被修改,MIME也可能发生变化。

String getOriginalFilename()

获取文件的原名,即该文件在客户端的文件全名,典型的用途就是获取文件的扩展名。

. void transferTo(File dest)

执行保存所上传的文件。

. InputStream getInputStream()

获取输入字节流,用于自定义接收所上传的文件的数据。

注意:该方法与以上transferTo()不可以同时使用,对于每个请求,只能选取其中1个方法来获取数据并保存文件。

关于MultipartResolver的配置

. maxUploadSize

用于配置上传的文件的最大大小,例如:当设置值为5M时,则上传的文件均不可以超过5M,即使一次性上传10个文件,则10个文件的大小总和不允许超过5M。

设置方式例如:



. maxUploadSizePerFile

用于配置上传的每个文件的最大大小,例如:当设置值为5M时,如果一次性上传10个文件,则每个文件都不允许超过5M,但是总大小可以接近50M。

defaultEncoding

用于配置默认编码,上传的文件本身是不考虑编码问题的,只要文件的内容(表示文件内容信息含义的二进制序列)是正确的就可以了!由于上传过程中,会通过CommonsMultipartResolver去组织上传时表单中的数据,表单中可能包括例如输入框等控件,则同一个表单中还可能提交例如用户名等文本信息,这些信息都需要使用正确的编码来进行传递!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值