SSM框架(Spring+SpringMVC+MyBatis)中SpingMVC环境中的文件上传

该博客介绍了Java Spring实现文件上传的步骤。前端需提供特定表单,可利用HTML5新属性实现多文件上传;项目要添加两个jar包,并在配置文件中配置文件上传解析器和请求编码格式;最后在Controller中编写文件上传代码,上传成功可显示指定页面。

SSM框架Spring+SpringMVC+MyBatis中SpingMVC环境中的文件上传 eclipse

文件上传

步骤1

需要在前端提供一个文件上传的表单,该表单需要满足:
1.method属性必须为post
2.enctype属性必须为multipart/form-data
3.提供< input type=“file” name=“filename” />的文件上传输入框
multiple HTML5新属性 可实现多文件上传
例如:

<form action="uploadUrl" method="post" enctype="multipart/form-data">
	< input type="file" name="filename" multiple="multiple" />
	< input type="submit" value="文件上传" />
</form>

步骤2

1.添加两个jar包到项目的lib目录里
commons-fileupload-1.3.2.jar
common-io-2.5.jar

  <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>
        
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.2</version>
        </dependency>

2.在springmvc-config.xml配置文件中加入如下代码:
1.配置文件上传解析器 MultipartResolver
< bean id=“multipartResolver” class=“org.springframework.web.multipart.commons.CommonsMultipartResolver”>
2.设置请求编码格式
< property name=“defaultEncoding” value=“UTF-8”>
< /bean >

<!-- 配置文件上传解析器 MultipartResolver -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设置请求编码格式 -->
	<property name="defaultEncoding" value="UTF-8"></property>
	</bean>

若需要配置别的文件属性,还可以通过< property>元素来配置。

属性名含义
maxUploadSize上传文件的最大长度(以字节为单位)
maxInMemorySize缓存中的最大尺寸
defaultEncoding默认编码格式

步骤3

在Controller中编写文件上传即可实现文件上传
以下是我自己照着书上打的代码,仅供参考哦

package com.controller;

import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
import java.util.UUID;

import javax.imageio.IIOException;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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;

@Controller
public class fileController {
@RequestMapping("/fileUpload")
	public String handleFormUpload(@RequestParam("name")String name,@RequestParam("uploadfile") List<MultipartFile>
	uploadfile, HttpServletRequest request) {
	//判断文件是否为空是否有内容
		if(!uploadfile.isEmpty() && uploadfile.size()>0) {
			for(MultipartFile file : uploadfile) {
				//获取上传文件的原始名称
				String originalFilename = file.getOriginalFilename();
				//设置上传文件的保存目录地址
				String dirPath=request.getServletContext().getRealPath("/upload/");
				File filePath = new File(dirPath);
				//如果保存文件的地址不存在,就先创建目录
				if(!filePath.exists()) {
					filePath.mkdirs();
				}
				//使用UUID重新命名上传的文件名称(上传人——uuid_原始文件名称)
				String  newFilename = name+"_"+UUID.randomUUID()+
									"_"+originalFilename;
				try {
					//使用MultipartFile接口的方法完成文件上传到指定位置
					file.transferTo(new File(dirPath + newFilename));
				}catch(Exception e) {
					e.printStackTrace();
					return "error";
				}
			}
			return "success";
		}else {
			return "error";
		}
		
	}
	}

运行页面:

赵琳文件上传
上传成功即可显示success.jps页面
如果未更改过项目发布路径,则要去工作空间的metadata目录中找(我的路径为:D:\MySpring.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\springmvcFile\upload)
其中MySpring是我的eclipse的工作空间,springmvcFile是我的项目名称。







(希望这篇博客可以帮到你)
赵琳表情包

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值