use of com.tale.model.entity.Attach in project tale by otale.
the class IndexController method upload.
/**
* 上传文件接口
*/
@SysLog("上传附件")
@PostRoute("api/attach/upload")
@JSON
public RestResponse<?> upload(Request request) {
log.info("UPLOAD DIR = {}", TaleUtils.UP_DIR);
Users users = this.user();
Integer uid = users.getUid();
List<Attach> errorFiles = new ArrayList<>();
List<Attach> urls = new ArrayList<>();
Map<String, FileItem> fileItems = request.fileItems();
if (null == fileItems || fileItems.size() == 0) {
return RestResponse.fail("请选择文件上传");
}
fileItems.forEach((fileName, fileItem) -> {
String fname = fileItem.getFileName();
if ((fileItem.getLength() / 1024) <= TaleConst.MAX_FILE_SIZE) {
String fkey = TaleUtils.getFileKey(fname);
String ftype = fileItem.getContentType().contains("image") ? Types.IMAGE : Types.FILE;
String filePath = TaleUtils.UP_DIR + fkey;
try {
Files.write(Paths.get(filePath), fileItem.getData());
if (TaleUtils.isImage(new File(filePath))) {
String newFileName = TaleUtils.getFileName(fkey);
String thumbnailFilePath = TaleUtils.UP_DIR + fkey.replace(newFileName, "thumbnail_" + newFileName);
ImageUtils.cutCenterImage(CLASSPATH + fkey, thumbnailFilePath, 270, 380);
}
} catch (IOException e) {
log.error("", e);
}
Attach attach = new Attach();
attach.setFname(fname);
attach.setAuthorId(uid);
attach.setFkey(fkey);
attach.setFtype(ftype);
attach.setCreated(DateKit.nowUnix());
attach.save();
urls.add(attach);
siteService.cleanCache(Types.SYS_STATISTICS);
} else {
Attach attach = new Attach();
attach.setFname(fname);
errorFiles.add(attach);
}
});
if (errorFiles.size() > 0) {
return RestResponse.fail().payload(errorFiles);
}
return RestResponse.ok(urls);
}
Aggregations