你如何处理PHP中的临时图片上传?
作者:互联网
我正在用PHP创建一个在线游戏,用户可以在其中创建可玩的角色.每个角色都可以拥有用户上传的肖像.玩家可以同时拥有多个角色,并且可以随时更改他们的图片.当然,图片必须调整大小并重新压缩以避免大文件.这是我的问题:
当玩家更改其数据(其中包含图片),然后点击“保存”时,服务器端验证就会启动.它会检查非唯一字符名称,空必填字段等内容.如果发现任何错误,显示.在这种情况下,表单应该预先填充玩家输入的数据,因此他只需要更改故障位,而不是重新输入所有内容.但是如何将图片保存在这种“临时”状态?
我无法预先填充文件上传字段,浏览器不允许这样做.如果我将它保存在一个临时文件中,那么必须在某些时候清理图片,因为玩家可以简单地关闭他的浏览器并中止整个过程.什么时候应该?我应该为临时文件选择什么文件名?如果播放器在两个浏览器选项卡中打开相同的字符进行编辑,则它们不应该冲突(每个都应该有自己的副本).
你会如何解决这个问题?
解决方法:
我将文件保存到临时位置,并在文件名中存储唯一标识符和当前时间戳.然后将文件名放在用户的会话中.当用户成功创建或更新其帐户时,您将图像文件保存到其永久位置并删除临时文件.您可以运行cron进程来扫描临时目录并检查时间戳,删除任何早于过期的文件(可能是一小时).
如果您无法运行cron作业,则每次成功创建/更新验证时都可以始终启动目录清理.这可能会更低效(额外的目录读取以及每次成功提交时可能的文件操作)但除非您处理大量流量,否则您可能甚至都不会注意到.
标签:php,upload,image,temporary-files 来源: https://codeday.me/bug/20190722/1498965.html