项目.xml 和hello-servlet.xml配置文件在上一篇可以找到,
直接贴上后台代码
package com.gaorui.Controller.Annotation;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@Controller
@RequestMapping("/upload")
public class UploadFile {
@RequestMapping("/uploadfile")
public String upload(@RequestParam(value="file") CommonsMultipartFile file){
String filename1=file.getOriginalFilename();
System.out.println(file.getOriginalFilename());
if(!filename1.isEmpty()){
try {
// FileInputStream in = new FileInputStream("D:/"+new Date().getTime()+filename);
String filename2 = "D:/"+filename1;
FileOutputStream os = new FileOutputStream(filename2);
InputStream in = file.getInputStream();
int a =0;
byte[] b = new byte[1024];
while((a=in.read(b))!=-1){
os.write(b,0,a);
}
os.flush();
os.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return "uploadsuccess";
}
/**
这是SpringMvc 文件上传的优化方法,直接用的SpringMvc提供的包的方法。
*/
@RequestMapping("/uploadfile2")
public String uploadfile2(HttpServletRequest request){
// //创建一个通用的多部分解析器
CommonsMultipartResolver cmr =new CommonsMultipartResolver(request.getSession().getServletContext());
// //判断 request 是否有文件上传,即多部分请求
if(cmr.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest mhsr = (MultipartHttpServletRequest) request;
// //取得request中的所有文件名
Iterator<String> iter = mhsr.getFileNames();
while(iter.hasNext()){
取得上传文件
MultipartFile file = mhsr.getFile((String)iter.next());
// //取得当前上传文件的文件名称
String filename = file.getOriginalFilename();
//定义上传路径
String path ="E:/"+filename;
File file2 = new File(path);
try {
//transfer方法是MultipartFile包中提供的方法,直接可以写入文件到指定目录
file.transferTo(file2);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "uploadsuccess";
}
@RequestMapping("/toUpload")
public String toUpload(){
return "upload";
}
}