use of com.blade.mvc.view.RestResponse in project tale by otale.
the class AttachController method upload.
/**
* 上传文件接口
*
* 返回格式
* @param request
* @return
*/
@Route(value = "upload", method = HttpMethod.POST)
@JSON
public RestResponse upload(Request request) {
LOGGER.info("UPLOAD DIR = {}", TaleUtils.upDir);
Users users = this.user();
Integer uid = users.getUid();
Map<String, FileItem> fileItemMap = request.fileItems();
Collection<FileItem> fileItems = fileItemMap.values();
List<Attach> errorFiles = new ArrayList<>();
List<Attach> urls = new ArrayList<>();
try {
fileItems.forEach((FileItem f) -> {
String fname = f.fileName();
if (f.file().length() / 1024 <= TaleConst.MAX_FILE_SIZE) {
String fkey = TaleUtils.getFileKey(fname);
String ftype = TaleUtils.isImage(f.file()) ? Types.IMAGE : Types.FILE;
String filePath = TaleUtils.upDir + fkey;
File file = new File(filePath);
try {
Tools.copyFileUsingFileChannels(f.file(), file);
f.file().delete();
} catch (IOException e) {
e.printStackTrace();
}
Attach attach = attachService.save(fname, fkey, ftype, uid);
urls.add(attach);
siteService.cleanCache(Types.C_STATISTICS);
} else {
errorFiles.add(new Attach(fname));
}
});
if (errorFiles.size() > 0) {
RestResponse restResponse = new RestResponse();
restResponse.setSuccess(false);
restResponse.setPayload(errorFiles);
return restResponse;
}
return RestResponse.ok(urls);
} catch (Exception e) {
String msg = "文件上传失败";
if (e instanceof TipException) {
msg = e.getMessage();
} else {
LOGGER.error(msg, e);
}
return RestResponse.fail(msg);
}
}
Aggregations