SpringMVC文件上传

本文详细介绍如何使用SpringMVC实现文件上传功能,包括必要的jar包导入、springMVC配置、表单设计、JS验证、Controller处理逻辑及实体类定义等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC文件上传


## 文件上传

前言

致力于解决问题,如有不足之处,欢迎大佬指点


一、导入jar包

 <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

二、springMVC.xml配置

	<bean id="multipartResolver"
	          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	        <!--上传文件的最大大小,单位为字节,下面设置为5M -->
	        <property name="maxUploadSize" value="5242880"></property>
	        <!-- 上传文件的编码 -->
	        <property name="defaultEncoding" value="UTF-8"></property>
	</bean>

三、from表单

	<form method="post" action="addPaper" enctype="multipart/form-data" id="form">
		            论文题目: <input type="text" name="title""/><span id="title">*</span><br/>
		            论文题目: <select name="type">
							            <option value="1">应用型</option>
							            <option value="2">理论型</option>
		                            </select><br/>
		            论文摘要: <textarea name="paperSummary" ></textarea><span id="paperSummary">*</span><br/>
		            论文内容: <input type="file" name="file"/><span id="filePath">*</span><br/>
		            <input type="submit" value="保存" /><br/>
		            <input type="button" value="返回" onclick="history.go(-1);"/>
	 </form>

四、js验证

<script type="text/javascript">
			    $("#form").submit(function () {
			        //获取上传文件的路径
			        let filePath = $("[name='file']").val();
			        //获取文件上传路径后缀用来判断上传文件格式是否正确
			        let suffix = filePath.substr(filePath.lastIndexOf(".")+1);
			        if(suffix!="doc"){
			            if(suffix!="docx"){
			                $("#filePath").text("上传文件格式必须是doc docx").css("color","red");
			                return false;
			            }else{
			                $("#filePath").text("*").css("color","red");
			            }
			        }else{
			            $("#filePath").text("*").css("color","red");
			        }
			        //获取上传文件大小,单位字节(B)
			        	1KB=1024B
						1MB=1024KB
			        let fileSize =$("[name='file']")[0].files[0].size;
			        if(fileSize > 5*1024*1024){
			            $("#filePath").text("上传文件大小不能超过5M").css("color","red");
			            return false;
			        }else{
			            $("#filePath").text("*").css("color","red");
			        }
			    })
</script>

五、controller

 			   /** 
			     * 
			     * @param paper 实体类
			     * @param file  上传的文件
			     * @param session 用来获取当前登录用户信息
			     * @return
			     * @throws IllegalStateException
			     * @throws IOException
			     * @RequestParam("file") file为表单上传文件域的name
			     */
			    @RequestMapping("/addPaper")
			    public String addPaper(T_Paper paper, @RequestParam("file") MultipartFile file,HttpSession session)
			            throws IllegalStateException, IOException {
			        System.out.println(paper);
			        T_User user = (T_User) session.getAttribute("user");
			        // 判断文件不为空才上传文件
			        if (!file.isEmpty()) {
			            // 获取原文件名
			            String fileName = file.getOriginalFilename();
			            // 创建文件实例
			            File filePath = new File("E:\\paper\\", fileName);
			            // 如果文件目录不存在,创建目录
			            if (!filePath.getParentFile().exists()) {
			                filePath.getParentFile().mkdirs();
			            }
			            // 写入文件
			            file.transferTo(filePath);
			            paper.setPaperPath(filePath.toString());
			        }
			        paper.setCreatedBy(user.getId());
			        paper.setModifyBy(user.getId());
			        paperService.addPaper(paper);
			        return "redirect:getPaperInfo.html";
			    }

六、实体类

	@Data
	@AllArgsConstructor
	@NoArgsConstructor
	public class T_Paper {
	    private Integer id;
	    private String title;
	    private Integer type;
	    private String paperSummary;
	    private String paperPath;
	    private Integer createdBy;
	    private Date creationDate;
	    private Integer modifyBy;
	    private Date modifyDate;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值