springmvc实现文件上传

springmvc实现单文件上传

后端代码:

方法一:自己实现文件上传,可优化

    @RequestMapping("/fileupload")
	//@RequestParam("file1") 用来和前端的name="file1"相关联
	public String fileupload(@RequestParam("file1") CommonsMultipartFile file,HttpSession session) throws Exception {
		System.out.println("======");
		String fileName=file.getOriginalFilename();
		System.out.println("=======fileupload============"+fileName);
		//输入流关联源文件
		InputStream in = file.getInputStream();
		//输出流关联目标文件
		OutputStream out = new FileOutputStream("C://aa//"+fileName);
		byte b[]=new byte[1024];//一次传多大
		int len=0;//当最后只剩下500b的时候,len=500;
		while((len=in.read(b))!=-1) {
			out.write(b,0,len);
			out.flush();
		}
        //关闭资源
		out.close();
		in.close();
		//文件上传
		session.setAttribute("fileName", fileName);
		return "index";
	}

方法二:使用springmvc自带的上传 不可优化

@RequestMapping("/fileupload")
	//@RequestParam("file1") 用来和前端的name="file1"相关联
	public String fileupload(@RequestParam("file1") CommonsMultipartFile file,HttpSession session) throws Exception {
		System.out.println("======");
		String fileName=file.getOriginalFilename();
		System.out.println("=======fileupload============"+fileName);
		//文件上传
		file.transferTo(new File("C://aa//"+file.getOriginalFilename()));
		return "index";
	}

前端代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- enctype属性指定的是表单数据的编码方式 -->
<form action="fileupload" method="post" enctype="multipart/form-data">
	<input type="file" name="file1">
	<button>提交</button>
</form>
</body>
</html>

springmvc实现多文件上传

后端代码:

@RequestMapping("/upload")
	public String upload(HttpServletRequest request){
		System.out.println("=====upload======");
		//将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
		CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
		//判断form是否有enctype="multipart/form-data"
		if (multipartResolver.isMultipart(request)) {
				//将request转换成MultipartHttpServletRequest类型
				MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
				Iterator<String> iter = multipartRequest.getFileNames();
	      //遍历文件
	      while (iter.hasNext()) {
	    	  		//将文件放入file中,并将指针指向下一条
					MultipartFile file = multipartRequest.getFile(iter.next());
					System.out.println("=======判断后面还有没有文件============"+iter.hasNext());
					if(!file.isEmpty()){
						//文件名
						String path = file.getOriginalFilename();
						System.out.println("========文件名========"+path);
						try {
							//文件上传
							file.transferTo(new File("c://aa//"+path));
						} catch (IllegalStateException e) {
							e.printStackTrace();
						} catch (IOException e) {
							e.printStackTrace();
						}
	           }
	      	}
		}
		return "index";//转发到index页面
	}

前端代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>多文件上传</title>
</head>
<body>
	<form action="upload" method="post" enctype="multipart/form-data">
		选择文件1:<input type="file" name="file"><br>
		选择文件2:<input type="file" name="file1"><br>
		选择文件3:<input type="file" name="file2"><br>
		选择文件4:<input type="file" name="file3"><br>
		<input type="submit" value="提交">
	</form>
</body>
</html>

前端代码中需要注意的是name属性中的值不能相同,但是可以随意定义

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值