使用servlet上传文件我们需要写一堆代码,使用spingMVC框架只要配置几下就好了,话不多说,开写,
-
导入两个jar包
commons-fileupload-1.3.1.jar
commons-io-2.4.jar -
修改springMVC配置文件,添加下列代码(注意 此bean的id必须为multipartResolver,在springMVC启动后会自动寻找id为multipartResolver的bean)
<!-- 文件上传 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--默认编码格式--> <property name="defaultEncoding" value="UTF-8"></property> <!--文件的最大值 Bytes为单位 -1为不限制--> <property name="maxUploadSize" value="-1"></property> </bean>
-
在控制器中添加方法(我是使用的注解方式来实现控制器的,有的人可能学的是使用实现接口的方式, 注意:文件参数必须为MultipartFile类型)
//文件上传 @RequestMapping("fileUpload") public String fileUpload(MultipartFile file) { InputStream inputStream = null; FileOutputStream outputStream = null; try { inputStream = file.getInputStream(); String fileName = file.getOriginalFilename(); System.out.println("文件名是" + fileName); //注意不要忘了springFile的\\ //把文件存放到D盘下的springFile文件夹下 outputStream = new FileOutputStream("D:\\springFile\\" + fileName); byte[] bytes = new byte[1024]; int i = -1; while ((i = inputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, i); } System.out.println("文件上传成功 大小是:" + file.getSize()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { inputStream.close(); outputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //返回的页面,这里不管他,等下看控制台输出和文件夹 return "ok"; }
-
新建一个html(或者jsp)页面,注意enctype="multipart/form-data"不能少了
<!-- 文件上传 --> <form action="fileUpload" method="POST" enctype="multipart/form-data"> <input type="file" name="file"><br> <input type="submit" value="提交"> </form>
-
浏览器访问,并选择文件上传 这里我选择了一张jpg图片,然后提交
-
控制台输出,可以看到控制台成功打印出了文件名和大小,并且springFile文件夹下多出个刚刚上传的文件(红圈的地方不用管,那是我在别的方法中的输出)