利用struts2文件上传后,对文件信息保存到数据库。
文件上传成功后,对文件信息进行保存,失败则不保存。
问题就在于如果文件上传成功后,对数据库保存失败,那么该如何保持事务的准确性。
目前相到两种解决方法:
1、建立temp临时文件夹,当保存数据库成功,则copy文件到正式目录,不论文件上传成功失败,最后删除temp。(麻烦)
2、使用异步对文件进行操作。(不大清楚实现逻辑)
希望大家能给我提供方案。谢谢~
先插入数据,成功则保存文件,不成功则不进行处理不就可以了么
这个很重要吗? 如果是,可以考虑直接写流到数据库 如oracle的blob存储;否则,try-catch-finally;中的catch捕获异常,然后删除; 失败的几率按理说是非常小的;可以忽略
插入到数据库,如果不成的话回滚。至于已经上传到服务端的文件,可以,每隔一段时间清空一下呗。
同意jinnianshilongnian,在try中判断是否上传成功就好了,如果没有成功就throw一个异常,然后在catch里面捕获,同时删除文件。
想要实现文件在目录上与数据库中保持同步,又不想在当数据库保存失败时删除文件,貌似无解了。
不太理解你的异步,莫非指的是前台操作与后台处理的异步?如果是的话,那与这个没有关系。如果不是,请指明。
关于你的第一种解法,并不觉得哪里复杂了。