1. 客户端表单实现
文件上传客户端三要素:
表单项type="file"
表单的提交方式是post
表单的enctype 属性是多部分表单形式,及enctype="multipart/form-data"upload.jsp
<form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data"> 名称<input type="text" name="username"><br/> 文件1<input type="file" name="uploadFile"><br/> 文件2<input type="file" name="uploadFile"><br/> <input type="submit" value="提交"> </form> <form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data"> 名称<input type="text" name="username"><br/> 文件1<input type="file" name="uploadFile"><br/> 文件2<input type="file" name="uploadFile2"><br/> <input type="submit" value="提交"> </form>
2. 文件上传的原理
当form 表单修改为多部分表单时,request.getParameter() 将失效
enctype = "application/x-www-form-urlencoded" 时,form 表单的正文内容格式是:key=value&key=value&key=value
当form 表单的enctype 取值为Mutilpart/form-data 时,请求正文内容就变成多部分形式:
3. 文件上传
单文件上传步骤:
(1)导入fileupload 和io 坐标
(2)配置文件上传解析器
(3)编写文件上传代码
(1)导入fileupload 和io 坐标
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.3</version> </dependency>
(2)配置文件上传解析器
<!--配置文件上传解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UYF-8"/> <property name="maxUploadSize" value="500000"/> </bean>
(3)编写文件上传代码1
@RequestMapping(value="/quick22") @ResponseBody public void save22(String username, MultipartFile uploadFile,MultipartFile uploadFile2) throws IOException { System.out.println(username); //获得上传文件的名称 String originalFilename = uploadFile.getOriginalFilename(); uploadFile.transferTo(new File("C:\\upload\\"+originalFilename)); String originalFilename2 = uploadFile2.getOriginalFilename(); uploadFile2.transferTo(new File("C:\\upload\\"+originalFilename2)); }
(4)编写文件上传代码2
@RequestMapping(value="/quick23") @ResponseBody public void save23(String username, MultipartFile[] uploadFile) throws IOException { System.out.println(username); for (MultipartFile multipartFile : uploadFile) { String originalFilename = multipartFile.getOriginalFilename(); multipartFile.transferTo(new File("C:\\upload\\"+originalFilename)); } }