Integer uploadNum,
Boolean mark,
@RequestParam(value = "uploadFile", required = false) MultipartFile file,
HttpServletRequest request, ModelMap model) {
WebErrors errors = validate(filename, file, request);
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, "member.memberClose");
}
if (user == null) {
return FrontUtils.showLogin(request, model, site);
}
if (errors.hasErrors()) {
model.addAttribute(ERROR, errors.getErrors().get(0));
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, RESULT_PAGE);
}
MarkConfig conf = site.getConfig().getMarkConfig();
if (mark == null) {
mark = conf.getOn();
}
String origName = file.getOriginalFilename();
String ext = FilenameUtils.getExtension(origName).toLowerCase(
Locale.ENGLISH);
try {
String fileUrl;
if (site.getConfig().getUploadToDb()) {
String dbFilePath = site.getConfig().getDbFileUri();
if (!StringUtils.isBlank(filename)) {
filename = filename.substring(dbFilePath.length());
if (mark) {
File tempFile = mark(file, conf);
fileUrl = dbFileMng.storeByFilename(filename,
new FileInputStream(tempFile));
tempFile.delete();
} else {
fileUrl = dbFileMng.storeByFilename(filename, file
.getInputStream());
}
} else {
if (mark) {
File tempFile = mark(file, conf);
fileUrl = dbFileMng.storeByExt(site.getUploadPath(),
ext, new FileInputStream(tempFile));
tempFile.delete();
} else {
fileUrl = dbFileMng.storeByExt(site.getUploadPath(),
ext, file.getInputStream());
}
// 加上访问地址
fileUrl = request.getContextPath() + dbFilePath + fileUrl;
}
} else if (site.getUploadFtp() != null) {
Ftp ftp = site.getUploadFtp();
String ftpUrl = ftp.getUrl();
if (!StringUtils.isBlank(filename)) {
filename = filename.substring(ftpUrl.length());
if (mark) {
File tempFile = mark(file, conf);
fileUrl = ftp.storeByFilename(filename,
new FileInputStream(tempFile));
tempFile.delete();
} else {
fileUrl = ftp.storeByFilename(filename, file
.getInputStream());
}
} else {
if (mark) {
File tempFile = mark(file, conf);
fileUrl = ftp.storeByExt(site.getUploadPath(), ext,
new FileInputStream(tempFile));
tempFile.delete();
} else {
fileUrl = ftp.storeByExt(site.getUploadPath(), ext,
file.getInputStream());
}
// 加上url前缀
fileUrl = ftpUrl + fileUrl;
}
} else {
String ctx = request.getContextPath();
if (!StringUtils.isBlank(filename)) {
filename = filename.substring(ctx.length());
if (mark) {
File tempFile = mark(file, conf);
fileUrl = fileRepository.storeByFilename(filename,
tempFile);
tempFile.delete();
} else {
fileUrl = fileRepository
.storeByFilename(filename, file);
}
} else {
if (mark) {
File tempFile = mark(file, conf);
fileUrl = fileRepository.storeByExt(USER_IMG_PATH, ext, tempFile);
tempFile.delete();
} else {
fileUrl = fileRepository.storeByExt(USER_IMG_PATH, ext, file);
}
// 加上部署路径
fileUrl = ctx + fileUrl;
}
}
model.addAttribute("uploadPath", fileUrl);
model.addAttribute("uploadNum", uploadNum);
} catch (IllegalStateException e) {
model.addAttribute(ERROR, e.getMessage());
log.error("upload file error!", e);
} catch (IOException e) {
model.addAttribute(ERROR, e.getMessage());
log.error("upload file error!", e);
} catch (Exception e) {
model.addAttribute(ERROR, e.getMessage());
log.error("upload file error!", e);
}
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, RESULT_PAGE);
}