Spring SpringMVC使用MultipartFile实现文件的上传

    如果需要实现跨服务器上传文件,就是将我们本地的文件上传到资源服务器上,比较好的办法就是通过ftp上传。这里是结合SpringMVC+ftp的形式上传的。我们需要先懂得如何配置springMVC,然后在配置ftp,最后再结合MultipartFile上传文件。

springMVC上传需要几个关键jar包,spring以及关联包可以自己配置,这里主要说明关键的jar包

1:spring-web-3.2.9.RELEASE.jar (spring的关键jar包,版本可以自己选择)

2:commons-io-2.2.jar (项目中用来处理IO的一些工具类包)

配置文件

SpringMVC是用MultipartFile来进行文件上传的,因此我们先要配置MultipartResolver,用于处理表单中的file

<!-- 上传文件解释器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="utf-8" />
		<property name="maxUploadSize" value="10485760" />
		<property name="maxInMemorySize" value="4096" />
		<property name="resolveLazily" value="true" />
	</bean>

其中属性详解:

defaultEncoding配置请求的编码格式,默认为iso-8859-1

maxUploadSize配置文件的最大单位,单位为字节

maxInMemorySize配置上传文件的缓存 ,单位为字节

resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常

页面配置

在页面的form中加上enctype="multipart/form-data"

<form id="" name="" method="post" action="" enctype="multipart/form-data"> 

表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。 

是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作。enctype="multipart/form-data"是上传二进制数据。form里面的input的值以2进制的方式传过去,所以request就得不到值了。

编写上传控制类

编写一个上传方法,这里没有返回结果,需要跳转页面或者返回其他值可以将void改为String、Map<String,Object>等值,再return返回结果。

        /**
	 * 上传
	 * @param request
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/upload", method = {RequestMethod.GET, RequestMethod.POST})
	public void upload(HttpServletRequest request) {
		MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest)request;
		MultipartFile file = multipartRequest.getFile("file");//file是页面input的name名
		String basePath = "文件路径"
		try {
			MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
  			if (resolver.isMultipart(request)) {
				String fileStoredPath =  "文件夹路径";
				//随机生成文件名
				String randomName = StringUtil.getRandomFileName();
				String uploadFileName = file.getOriginalFilename();
				if (StringUtils.isNotBlank(uploadFileName)) {
					//截取文件格式名
					String suffix = uploadFileName.substring(uploadFileName.indexOf("."));
					//重新拼装文件名
					String newFileName = randomName + suffix;
					String savePath = basePat
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值