首先引入两个maven依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
springmvc配置文件:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
随后写一个jsp,发送请求,务必记住要加 enctype
<form action="/fileupload/do3.do" method="post"enctype="multipart/form-data">
选择文件:<input type="file" name="file"/><br/>
<input type="submit" value="提交" />
</form>
controller层
有3个方法
@Controller
@RequestMapping("/fileupload")
public class TestFileUpLoadController {
private static final Logger log= LoggerFactory.getLogger(TestFileUpLoadController.class);
@RequestMapping(value = "/file.do",method = RequestMethod.POST)
public String fileUpload(@RequestParam(value="file",required = false)MultipartFile files[]) throws IOException {
for(MultipartFile file : files){
System.out.println(file.getOriginalFilename());//得到文件的原始名字
System.out.println(file.getName());//得到文件的字段的名字”file
InputStream in = file.getInputStream();
OutputStream out = new FileOutputStream("d:/"+file.getOriginalFilename());
int len=0;
byte[] buf =new byte[1024];
while((len=in.read(buf))!=-1){
out.write(buf);
out.flush();
}
out.close();
in.close();
}
return "fileSuccess";
}
```
@RequestMapping(value="do2.do",method = RequestMethod.POST)
public String fileUpload(@RequestParam("file") CommonsMultipartFile file) throws IOException {
//用来检测程序运行时间
long startTime=System.currentTimeMillis();
System.out.println("fileName:"+file.getOriginalFilename());
try {
//获取输出流
OutputStream os=new FileOutputStream("D:/"+new Date().getTime()+file.getOriginalFilename());
//获取输入流 CommonsMultipartFile 中可以直接得到文件的流
InputStream is=file.getInputStream();
int temp;
//一个一个字节的读取并写入
while((temp=is.read())!=(-1))
{
os.write(temp);
}
os.flush();
os.close();
is.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long endTime=System.currentTimeMillis();
System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms");
return "fileSuccess";
}
@RequestMapping(value = "/do3.do",method = RequestMethod.POST)
public String fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException {
long startTime=System.currentTimeMillis();
System.out.println("fileName:"+file.getOriginalFilename());
String path="D:/"+new Date().getTime()+file.getOriginalFilename();
File newFile=new File(path);
//通过CommonsMultipartFile的方法直接写文件(注意这个时候)
file.transferTo(newFile);
long endTime=System.currentTimeMillis();
System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");
return "fileSuccess";
}
}