SpringMVC框架 (8) —— 文件上传

文件上传

在web开发中一般会有文件上传的操作
一般JavaWeb开发中文件上传使用的 Apache组织的Commons FileUpload组件
SpringMVC中使用 MultipartFile file对象接受上传文件,必须保证 后台参数的名称和表单提交的文件的名称一致

文件上传必须条件

  1. 表单必须post
  2. 表单必须有 file 文件域
  3. 表单的 enctype=“multipart/form-data”

拷贝jar包

在这里插入图片描述

准备jsp页面

<fieldset>
		<legend>单个文件上传</legend>
		<form action="${pageContext.request.contextPath}/upload.do" method="post" enctype="multipart/form-data">
			姓名: <input name="username"><br>
			头像: <input type="file" name="headImg"><br>
			<button type="submit">提交</button>
		</form>
	</fieldset>

后台代码

SpringMVC中使用 MultipartFile file对象接受上传文件,必须保证 后台方法MultipartFile 参数的名称和表单提交的文件的名称一致

//SpringMVC中使用  MultipartFile file对象接受上传文件,必须保证 后台参数的名称和表单提交的文件的名称一致
	@RequestMapping("/upload")
	public String singleUpload(MultipartFile headImg,@RequestParam("username")String username) throws IOException {
		
		System.out.println(headImg.getName());//获取上传文件的表单名称 
		System.out.println(headImg.getContentType());//MIME类型
		System.out.println(headImg.getSize());//文件大小
		System.out.println(headImg.getOriginalFilename());//获取上传文件的完整名称
		//获取上传文件对应的输入流
		//InputStream in = headImg.getInputStream();
		
		//创建一个磁盘目录用于保存文件
		File destFile= new File("c:/upload");
		if(!destFile.exists()) {
			destFile.mkdir();
		}
		//使用uuid作为文件随机名称
		String fileName = UUID.randomUUID().toString().replaceAll("-", "");
		//使用FileNameUtils获取上传文件名的后缀
		String extension = FilenameUtils.getExtension(headImg.getOriginalFilename());// jpg , png 等等
		//创建新的文件名称
		String newFileName = fileName + "."+extension;
		
		//创建要保存文件的File对象
		File file = new File(destFile, newFileName);
		//保存文件到本地磁盘
		headImg.transferTo(file);
		
		return "redirect:/upload.jsp";
	}

配置文件上传解析器

配置文件上传解析器:bean的名字是固定的
使用spring表达式 #{1024*1024}

<!-- 配置文件上传解析器:bean的名字是固定的,底层使用的名称注入 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设置上传文件的最大尺寸为1MB -->
	<property name="maxUploadSize" value="#{1024 * 1024}"></property>
</bean>

多文件上传

<fieldset>
		<legend>单个文件上传</legend>
		<form action="${pageContext.request.contextPath}/uploads.do" method="post" enctype="multipart/form-data">
			文件1: <input type="file" name="headImgs"><br>
			文件2: <input type="file" name="headImgs"><br>
			文件3: <input type="file" name="headImgs"><br>
			<button type="submit">提交</button>
		</form>
	</fieldset>

@RequestMapping("/uploads")
	public String singleUploads(MultipartFile[] headImgs) throws IOException {
		

		//创建一个磁盘目录用于保存文件
		File destFile= new File("c:/upload");
		if(!destFile.exists()) {
			destFile.mkdir();
		}
		for (int i = 0; i < headImgs.length; i++) {
			MultipartFile headImg = headImgs[i];
			
			//使用uuid作为文件随机名称
			String fileName = UUID.randomUUID().toString().replaceAll("-", "");
			//使用FileNameUtils获取上传文件名的后缀
			String extension = FilenameUtils.getExtension(headImg.getOriginalFilename());// jpg , png 等等
			//创建新的文件名称
			String newFileName = fileName + "."+extension;
			
			//创建要保存文件的File对象
			File file = new File(destFile, newFileName);
			//保存文件到本地磁盘
			try {
				headImg.transferTo(file);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return "redirect:/upload.jsp";
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值