首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:图片上传失败

问PHP:图片上传失败
EN

Stack Overflow用户
提问于 2010-10-30 00:27:48
回答 5查看 90关注 0票数 0

我有一个上传图像系统。

你上传一张图片,然后裁剪它并按下保存。

如果在上载图像后取消此过程,则图像将保留在服务器上。

因此,我尝试在db中创建一个名为"failImage“的列,这样当您上传图像时,它会在列中存储文件名,例如1111.jpg。

因此,如果您稍后通过关闭网站或其他方式取消此过程,下次您访问时,我会创建一个函数来检查failImage是否为空。

如果不是,则删除(取消链接) failImage中的值(在本例中为1111.jpg)并清空failImage列。

这可以很好地工作。

But...if你有两个我的网站的窗口,在第一个你上传一个图像,然后在第二个你刷新窗口(F5)我做的函数,在failImage中的值取消链接运行,然后会发生错误到你已经打开的前一个窗口,当你试图裁剪和保存它时,因为它显示没有这样的文件或目录,因为第二个窗口已经删除了你正在处理的图像。

我已经想了一段时间来解决这个问题了,有什么办法可以解决这个问题吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-10-30 00:37:46

如果你把这个过程分成两个步骤,你可以让这个过程变得更简单,减少错误的产生。

用户帐户步骤:用户上传图像,保存在-

  1. 中。

  1. 步骤:用户可以选择已上载的图像并对其进行裁剪。

您将这两个步骤严格分开,但为了保持良好的可用性,您没有向用户显示这两个步骤。如果步骤1成功完成,您将自动调用步骤2。

优势:

  • 如果步骤2失败,用户可以随时手动调用它。
  • 不需要您所描述的涉及数据库的复杂和错误提示机制。
票数 1
EN

Stack Overflow用户

发布于 2010-10-30 00:37:32

我相信dnagirl的解决方案是正确的,尽管我不确定文件在上传后会在临时目录中存在多久。一种可能的替代方法是实现您自己的临时目录,并运行cron作业,以便在几个小时后自动清理它。基本上:

  1. 用户上传文件
  2. 将文件从OS Temp移动到自定义Temp
  3. 在保存时提示他们裁剪并保存
  4. ,将其移动到永久目录
    • 当cronjob运行时,它应该检查文件的年龄(请参阅filemtime());如果它比截止时间早,请删除cronjob

​

如果您不想执行所有这些操作,那么我建议您将时间戳编码到failimage列中。

票数 0
EN

Stack Overflow用户

发布于 2010-10-30 01:29:18

让我看看我是否理解正确:

  1. 上载图像。
  2. 编辑图像。

要求:

  • 浏览器中的多个实例不应取消图像的链接。
  • 如果用户愿意,可以稍后返回到图像。

为用户提供数据库中图像的文件名或id的Cookie。在图像上放置一个时间戳(在数据库中),并且每隔一段时间检查您的数据库并删除过期的图像。如果用户回来后仍然有cookie,就让他们完成图像编辑。因为您不能按照您指定的方式使用cron,所以请按照其他用户所说的做。根据你有多少流量和你想要验证图像的“新鲜度”的频率来确定检查数据库的可能性。

如果用户在浏览器中打开一个新的选项卡或窗口,他们将获得一个已经打开的窗口的副本。

这听起来像是可行的吗?

此外,您还可以查看IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4053894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档