springmvc中利用MultipartFile文件上传

首先想利用需要导入commons-fileupload的jar包,还有他依赖的commons-io

因为我们用到的是spring中的MultipartFile接口,她有一个实现类CommonsMultipartFile,这个类使用了commons-fileupload组建进行实现的。

下面是springmvc配置文件中的配置,配置Multipart的解析器,解析器还有一些属性,读者可以自己试一试

        <!-- 配置文件上传 需要配置commons-fiupload组建支持的CommonsMultipartResolver -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8"></property>
		<property name="maxUploadSize" value="1024000"></property>
	</bean>

下面是我的jsp页面的表单,和一般的上传一样,表单传输数据的格式要设置为multipart/form-data类型

       <form action="${pageContext.request.contextPath }/springmvc/testFileupload" method="post" enctype="multipart/form-data">
		File:<input type="file" name="file">
		FileDesc:<input type="text" name="fileDesc">
		<input type="submit">
	</form>

先面是我的controller中的方法,其中MultipartFile file是为了获取文件,String fileDesc是为了获取文件的描述其中request.getServletContest().getRealPath("file/" + file.getOriginalFilename())是用来获取我项目下的一个文件夹的绝对路径,将文件上传到这个路径下,获取到了MultipartFile对象,可以用他的getInputStream()方法获取文件的输入流,然后利用流将文件写到我想要的目录下。

       @RequestMapping("/testFileupload")
	public String testFileupload(@RequestParam("fileDesc") String fileDesc,@RequestParam("file") MultipartFile file,
			HttpServletRequest request) throws IOException {
		System.out.println(fileDesc);
		System.out.println(file.getOriginalFilename());
		String filePath = request.getServletContext().getRealPath("/file/" + file.getOriginalFilename());
		File targetFile = new File(filePath);
		System.out.println(filePath);
		InputStream is = file.getInputStream();
		OutputStream os = new FileOutputStream(targetFile);
		byte[] buffer = new byte[1024];
		int len;
		while((len = is.read(buffer)) != -1) {
			os.write(buffer, 0, len);
		}
		release(is);
		release(os);
		return "success";
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值