For*_*esR 1 jsf file-upload resource-cleanup
我有一个表单来上传不同类型的文件.我需要根据上传的文件类型提问.例如,如果文件是pdf,我需要询问作者.如果文件是mp3,我需要询问歌曲的标题.
所以:
到目前为止一切都很好.现在如果用户从不回答问题或从不单击保存按钮怎么办?显然我需要删除这个"被遗忘"的文件.
我的想法是将"未经证实的"文件存储在定期清理的一种远程缓冲区中.问题是正确管理这个缓冲区并决定何时清理它.
有没有最佳实践/现有解决方案?什么是最好的方法?
跟踪@SessionScopedbean中未经证实的上传文件,并用于@PreDestroy执行清理.
开球示例:
@SessionScoped
public class UserFileManager {
private List<File> unconfirmedUploadedFiles;
@PostConstruct
public void init() {
unconfirmedUploadedFiles = new ArrayList<>();
}
public void addUnconfirmedUploadedFile(File unconfirmedUploadedFile) {
unconfirmedUploadedFiles.add(unconfirmedUploadedFile);
}
public void confirmUploadedFile(File confirmedUploadedFile) {
unconfirmedUploadedFiles.remove(confirmedUploadedFile);
}
@PreDestroy
public void destroy() {
for (File unconfirmedUploadedFile : unconfirmedUploadedFiles) {
unconfirmedUploadedFile.delete();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不应将文件内容存储在服务器的内存中.它迟早会炸毁服务器.而是将它们存储在磁盘上并传递File引用.
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |