2021-09-02 14:02
// 可上传文件类型
Kv kv = fileService.ableUploadFileType();
这个我是配置到表里的 然后查到放到缓存里 你也可以不放到表里
------------------------------------------------------------------------------------------
public Kv ableUploadFileType() {
Kv kv = CacheKit.get(CacheConst.FILE_TYPE_CACHE, "fileTypeCache", new IDataLoader() {
@Override
public Kv load() {
Kv kv = Kv.create();
String sql = "SELECT * FROM T_FILE_TYPE";
Db.find(sql).forEach(record -> {
kv.set(record.getStr("TYPE"), record.getInt("CODE"));
});
return kv;
}
});
return kv;
}
2021-09-02 13:58
你可以参考下我这个 我只是简单实现 你看看满足你的需求吗
--------------------------------------------------------------------
public class UploadableFileInterceptor implements Interceptor{
@Inject
private FileService fileService;
@Override
public void intercept(Invocation inv) {
Controller controller = inv.getController();
HttpServletRequest request = controller.getRequest();
String contentType = request.getContentType();
// 如果Request是MultipartRequest类型的请求 则校验是否是可上传的文件类型
if(request instanceof MultipartRequest
|| (contentType != null && contentType.toLowerCase().contains("multipart"))) {
// 可上传文件类型
Kv kv = fileService.ableUploadFileType();
@SuppressWarnings("unchecked")
Set ableUploadFileType = kv.keySet();
List files = controller.getFiles();
for (UploadFile uploadFile : files) {
String originalFileName = uploadFile.getOriginalFileName();
// 文件后缀
String fileExtension = FileKit.getFileExtension(originalFileName);
if(StrKit.isBlank(fileExtension)) {
this.clean(files);
controller.renderJson(Ret.fail("msg", originalFileName + "文件格式错误 无后缀"));
return;
}
if(! ableUploadFileType.contains(fileExtension.toLowerCase())) {
this.clean(files);
controller.renderJson(Ret.fail("msg", fileExtension + "类型文件不可上传"));
return;
}
}
}
inv.invoke();
}
/**
* 清空上传文件
*/
private void clean(List files) {
// 不清空基础上传文件路径下的所有文件 防止上传以后不移动文件 直接以该路径为存储路径的情况下 删除文件
// Constants constants = JFinal.me().getConstants();
// String baseUploadPath = constants.getBaseUploadPath();
// String folder = PathKit.getWebRootPath() + "/" + baseUploadPath;
// File file = new File(folder);
// if(file.exists()) {
// FileUtil.clean(file);
// }
// 改为循环删除 只删除上传文件
files.forEach(uploadFile -> {
FileKit.delete(uploadFile.getFile());
});
}
}
2021-01-15 08:43
@graphics 那你这种情况就无所谓了 不需要纠结这些 你想要直接用数据库字段就getModel bean的形式 就用getBean 入参接收到就可以 想要详细了解的话你可以看看 Injector 这哥们就很明白了