@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