文件上传
表单页面
-
method属性必须为
post
-
必须要
enctype="multipart/form-data"
属性
<form action="upload1" method="post" enctype="multipart/form-data">
<input type="text" name="title" /><br>
<input type="file" name="upfile" /><br>
<input type="submit" value="submit" />
</form>
Servlet3.0上传
在web.xml中
在<servlet></servlet>
中添加
<multipart-config></multipart-config>
在(servletname)-servlet.xml中
<bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</bean>
在Java文件中
@RequestMapping("upload1")
public void upload1(@RequestParam(value="title") String title,
@RequestParam(value="upfile") MultipartFile file,
HttpServletRequest request){
System.out.println(title);
String rootPath=request.getServletContext().getRealPath("/");
if(!file.isEmpty()){
try {
InputStream is=file.getInputStream();
FileOutputStream fos=new FileOutputStream(
rootPath+"/"+"upload/"
+file.getOriginalFilename());
byte []cache=new byte[is.available()];
fos.write(cache);
is.close();
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Commons Fileupload上传
导包
commons-fileupload.jar
commons-io.jar
在(servlet-name)-servlet.xml中
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="200000"/>
</bean>
在java中
@RequestMapping("upload2")
public void upload2(@RequestParam(value="title") String title,
@RequestParam(value="upfile") MultipartFile file,
HttpServletRequest request){
System.out.println(title);
String rootPath=request.getServletContext().getRealPath("/");
try {
//复制文件 FileCopyUtils.copy(文件字节流,上传的位置);
FileCopyUtils.copy(file.getBytes(),
new File(rootPath+"/upload",file.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
}
一个表单多个文件的上传
@RequestMapping("upload3")
public void upload3(@RequestParam(value="title") String title,
@RequestParam(value="upfile") MultipartFile []file,
HttpServletRequest request){
System.out.println(title);
String rootPath=request.getServletContext().getRealPath("/");
try {
for(MultipartFile temp:file)
FileCopyUtils.copy(temp.getBytes(),
new File(rootPath+"/upload",temp.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
}