首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在服务器上处理图片上传

问在服务器上处理图片上传
EN

Stack Overflow用户
提问于 2012-03-24 18:10:27
回答 2查看 238关注 0票数 1

我有一个以下问题:我有一个多步骤的形式,其中在一个步骤中,用户上传图像到服务器,然后几个步骤进一步提供其他信息,当这些信息是无效的,没有数据应该提交-也应该删除图像。

我正在考虑PHP session,但我在PHP - Store Images in SESSION data?上看到它是一种低效的方式。当你在表单中进行的每一步都会重新加载图像(在会话中),就像有人提到的“你会希望它只有你需要的那么大,当你不需要它的时候,你需要尽快删除它,因为会话中的大量信息会减慢会话启动的速度。”-这里我有一个问题:它会减慢上传文件的用户的会话或所有用户的会话吗?

我必须指出,我正在寻找不依赖于操作系统脚本(cron或等)的解决方案-我没有运行此类脚本的权限。

对我来说,完美的解决方案是:将图像保存在磁盘上(例如,在某个以会话id命名的文件夹中),然后在表单的最新步骤之后,根据表单验证移动或删除该图像。如果用户意外地破坏了会话(例如,关闭浏览器),当然应该删除包含图像的文件夹。简而言之,我需要一些类似于事件“销毁会话”的回调。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-24 18:15:45

最好的解决方案是将图像保存在磁盘上的临时位置。然后,您可以将文件的文件名存储在用户的会话中。

关于清理孤立会话,您可以编写自己的会话保存处理程序并使用session_set_save_handler().进行设置

实际上,您需要编写自己的处理程序来打开、保存、读取、写入、销毁和垃圾收集会话。

在您的例子中,在销毁和垃圾收集过程中需要额外的代码,还可以删除连接到该会话的不需要的图像。

这是一个关于编写您自己的自定义会话处理程序的pretty good blog post。该示例使用MySQL作为存储后端,但您应该能够使其适应您选择的存储处理程序。

票数 1
EN

Stack Overflow用户

发布于 2012-03-24 19:25:55

我认为phpdev的想法是将文件存储到磁盘上的一个临时位置,并在$_SESSION中记录该位置,但我会使用一个简单得多的“垃圾”(或者更确切地说是不需要的图像)收集例程。

我会将清理例程绑定到某个用户触发的事件(您可以选择上传图像,从临时目录中成功复制图像等),然后让清理例程glob()或opendir()所有文件的临时目录,并删除任何超过某个预定值的旧文件。

这样,您就可以在“开箱即用”配置中运行会话处理,而不必担心任何自定义会话处理程序。

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

https://stackoverflow.com/questions/9850852

复制
相关文章

相似问题

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