@Controller
@RequestMapping(value = BaseController.FRONT_PATH + "/express/driver")
public class DriverFileUploadController {
@Autowired
private PreferencesManager manager;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public
@ResponseBody
CommonResp uploadHeadFile(ModelMap model) throws java.lang.Exception {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
CommonResp commonResp = new CommonResp();
Preferences pref = manager.getSystemPreferenceFor("config");
String realPath = pref.get("upload_dir", "/upload/");
Boolean isRelative = Boolean.valueOf(pref.get("upload_dir_relative", "")); //選擇是不是存儲絕對路徑true:相對路徑
System.out.println(realPath);
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = item.getName();
InputStream content = item.getInputStream();
// Do whatever with the content InputStream.
//這裏處理文件流
if (isRelative) {
String relativePath = request.getSession().getServletContext().getRealPath(realPath);
File driverFolder = creatFolder(relativePath, item.getName().replace(" ", ""));
FileUtils.copyInputStreamToFile(content, driverFolder);
}else{
File driverFolder = creatFolder(realPath, item.getName().replace(" ", ""));
FileUtils.copyInputStreamToFile(content, driverFolder);
}
}
}
commonResp.setContext("上傳成功");
return commonResp;
}
/**
* 這裏只建立一個realPath 若是每一個用戶都建立一個須要用下邊的註釋的方法
*
* @param realpath
* @param photoName
* @return
*/
private File creatFolder(String realpath, String photoName) {
File file = null;
File driverFolder = new File(realpath);
String[] eachFolder = photoName.split("\\.");
if (driverFolder.exists()) {
file = new File(driverFolder, eachFolder[0] + "." + eachFolder[1]);
} else {
file = new File(driverFolder, eachFolder[0] + "." + eachFolder[1]);
}
return file;
}
}
/**
* 檢測與建立一級、二級文件夾、文件名
* 這裏我經過傳入的兩個字符串來作一級文件夾和二級文件夾名稱
* 經過此種辦法咱們能夠作到根據用戶的選擇保存到相應的文件夾下
*/
/* private File creatFolder(String realpath, String photoName) {
File file = null;
File driverFolder = new File(realpath); //一級文件夾
String[] eachFolder = photoName.split("\\.");
if (driverFolder.exists()) { //若是一級文件夾存在,則檢測二級文件夾
File secondFolder = new File(driverFolder, eachFolder[0]);
if (secondFolder.exists()) { //若是二級文件夾也存在,則建立文件
file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]);
} else { //若是二級文件夾不存在,則建立二級文件夾
secondFolder.mkdir();
file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]); //建立完二級文件夾後,再合建文件
}
} else { //若是一級不存在,則建立一級文件夾
driverFolder.mkdir();
File secondFolder = new File(driverFolder, eachFolder[0]);
if (secondFolder.exists()) { //若是二級文件夾也存在,則建立文件
file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]);
} else { //若是二級文件夾不存在,則建立二級文件夾
secondFolder.mkdir();
file = new File(secondFolder, eachFolder[0] + "." + eachFolder[1]);
}
}
return file;
}
}*/
java