我有一个上传图像系统。
你上传一张图片,然后裁剪它并按下保存。
如果在上载图像后取消此过程,则图像将保留在服务器上。
因此,我尝试在db中创建一个名为"failImage“的列,这样当您上传图像时,它会在列中存储文件名,例如1111.jpg。
因此,如果您稍后通过关闭网站或其他方式取消此过程,下次您访问时,我会创建一个函数来检查failImage是否为空。
如果不是,则删除(取消链接) failImage中的值(在本例中为1111.jpg)并清空failImage列。
这可以很好地工作。
But...if你有两个我的网站的窗口,在第一个你上传一个图像,然后在第二个你刷新窗口(F5)我做的函数,在failImage中的值取消链接运行,然后会发生错误到你已经打开的前一个窗口,当你试图裁剪和保存它时,因为它显示没有这样的文件或目录,因为第二个窗口已经删除了你正在处理的图像。
我已经想了一段时间来解决这个问题了,有什么办法可以解决这个问题吗?
发布于 2010-10-30 00:37:46
如果你把这个过程分成两个步骤,你可以让这个过程变得更简单,减少错误的产生。
用户帐户步骤:用户上传图像,保存在-
您将这两个步骤严格分开,但为了保持良好的可用性,您没有向用户显示这两个步骤。如果步骤1成功完成,您将自动调用步骤2。
优势:
发布于 2010-10-30 00:37:32
我相信dnagirl的解决方案是正确的,尽管我不确定文件在上传后会在临时目录中存在多久。一种可能的替代方法是实现您自己的临时目录,并运行cron作业,以便在几个小时后自动清理它。基本上:
filemtime());如果它比截止时间早,请删除cronjob
如果您不想执行所有这些操作,那么我建议您将时间戳编码到failimage列中。
发布于 2010-10-30 01:29:18
让我看看我是否理解正确:
要求:
为用户提供数据库中图像的文件名或id的Cookie。在图像上放置一个时间戳(在数据库中),并且每隔一段时间检查您的数据库并删除过期的图像。如果用户回来后仍然有cookie,就让他们完成图像编辑。因为您不能按照您指定的方式使用cron,所以请按照其他用户所说的做。根据你有多少流量和你想要验证图像的“新鲜度”的频率来确定检查数据库的可能性。
如果用户在浏览器中打开一个新的选项卡或窗口,他们将获得一个已经打开的窗口的副本。
这听起来像是可行的吗?
此外,您还可以查看IP地址。
https://stackoverflow.com/questions/4053894
复制相似问题