SpringMvc 上傳文件優化

項目.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";
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章