SpringMVC——文件上传+文件下载

一、单个文件上传
前提:需要两个jarcommons-fileupload-1.4.jar commons-io-2.8.0.jar下载地址https://mvnrepository.com/

1、 jsp页面创建一个form表单,上传文件表单的三步骤:method="post" enctype="multipart/form-data" 和input中的type="file"
在这里插入图片描述
2、在容器的application.xml中添加文件上传解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	 <property name="defaultEncoding" value="UTF-8" /> <!--设置字符集  -->
	 <property name="maxUploadSize" value="2097152" /> <!--上传文件的大小  -->
</bean>

3、创建一个res.propertiesd属性文件在这里插入图片描述

updatePath=F:\\hello\\

4、在controller层调用方法

在这里插入图片描述

@Controller
//@RequestMapping("user")
public class TeacherController {
	/* 读取文件 */
	@Value("${updatePath}")
	private String path;
	
	@RequestMapping("uploads")
	public ModelAndView upload(ModelAndView mav,String name,@RequestParam("img") MultipartFile file) {
		if (!file.isEmpty()) {
			String fileName = file.getOriginalFilename();//源文件的名称
			String suffix = fileName.substring(fileName.lastIndexOf("."));
			String id = UUID.randomUUID().toString();
			try {
				//保存文件
				file.transferTo(new File(path+id+suffix));
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		mav.setViewName("index");
		mav.addObject("msg", "hi lucky");
		return mav;
	}

二、多个文件上传
换汤不换药
在这里插入图片描述

/多文件上传
	//多文件上传
	public ModelAndView uploads(ModelAndView mav,String name,@RequestParam("img") MultipartFile[] files) {
		if (files.length > 0) {
			for(MultipartFile file : files) {
				String fileName = file.getOriginalFilename();//源文件的名称
				String suffix = fileName.substring(fileName.lastIndexOf("."));
				String id = UUID.randomUUID().toString();
				try {
					//保存文件
					file.transferTo(new File(path + id + suffix));
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				mav.setViewName("index");
				mav.addObject("msg", "hi lucky");
			}
		}else {
			mav.setViewName("index");
			mav.addObject("msg", "hello");
			return mav;
		}
		return mav;
	}

三、文件下载
1、在上传成功的页面增加一个a标签
在这里插入图片描述

<a href="download?filename=1.png">下载</a>

在这里插入图片描述

//文件下载
	@RequestMapping("download")
	public void download(HttpServletResponse response,String filename) {
		try(
			BufferedOutputStream bos = new BufferedOutputStream( response.getOutputStream()); 
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path+filename)); 
				) {
			response.setCharacterEncoding("UTF-8"); 
			response.setContentType("image/jpeg;charset=utf-8"); 
			response.setHeader("Content-Disposition", "attachment;fileName=" + filename);
			int len = -1; 
			byte[] bys = new byte[1024]; 
			while((len = bis.read(bys)) != -1) { 
				bos.write(bys, 0, len);
			} 
		} catch (IOException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值