接受用户上传最佳做法!

时间:2010-01-25 02:05:51

标签: php zend-framework image upload

我试图在php中使用zend框架添加多页面表单,用户可以在其中列出项目到我的站点。在第一页上,他们输入有关该项目的详细信息(然后存储在会话中),第二页他们可以上传图像,然后第三页他们可以确认列表。如果他们确认,则添加列表。

在允许用户上传图片方面,实现这一目标的最佳方法是什么?我将使用SWFUpload或uploadify,但是我应该将图像直接添加到数据库中,如果是这样,在哪个列表ID下?在用户点击确认之前,我不会创建列表ID。那么最佳做法是什么?我应该将它们存储在以会话命名的临时文件夹中吗?存储在数据库中的临时名称,如地址+会话或什么?

编辑:嘿抱歉也许我没有表达自己非常清楚。我不是在寻找上传文件的方法。在我知道用户是否确实要确认列表之前,我要问的是如何最好地存储它们。我应该将它们存储在临时文件夹中,然后在用户确认列表时处理它们,然后编写一个删除一小时前创建的文件夹的自动脚本。或者我应该将它们存储在临时表中的数据库中,在某种由会话和列表属性组成的密钥下?基本上我问的是ebay在添加列表时但在确认并创建之前上传的图片会做什么。

非常感谢你的帮助!!

2 个答案:

答案 0 :(得分:1)

由于您提到了Zend Framework,我将包含文档的链接以及摘录:

  

Zend_File_Transfer广泛提供   支持文件上传和   下载。它配有内置功能   文件验证器加   用于更改文件的功能   过滤器。协议适配器允许   Zend_File_Transfer暴露同样的东西   用于传输协议的API,如HTTP,   FTP,WEBDAV等。

了解详情:http://framework.zend.com/manual/en/zend.file.html

  

Zend_File_Transfer随附   几个与文件相关的验证器   可以用来增加安全性   防止可能的攻击。<​​/ p>

了解详情:http://framework.zend.com/manual/en/zend.file.transfer.validators.html

例如:http://ahsangill.wordpress.com/2009/02/17/zend-framework-file-upload-using-zend_form_element_file/

答案 1 :(得分:1)

我没有使用'zend',所以我可能会抽烟。似乎这个问题并不真正依赖于'zend'。

3步上传似乎有点尴尬。是否有理由使用3种表格?似乎概念只会导致使用临时文件的困境(这是一个坏主意,BTW)。

至少,我会结合前两个步骤,描述和图片上传。有没有理由不在描述页面上包含“选择文件”按钮?即使你没有照片,通过另一种形式似乎也很麻烦。如果用户确实有图片,那么实际放置图片是合理的,并且描述在DB的最终位置标记为“暂定”。您的演示文稿代码会忽略“暂定”项目(对于除了所有者之外的任何用户)。它比担心单独的文件更清洁。如果用户从未确认过,您最终将进行一些清理工作。但是如果用户只是暂时分心或断开连接(考虑拨号调制解调器的日子),那么他很容易从他离开的地方继续。您的演示文稿搜索/演示代码将显示用户自己拥有的“暂定”项目。当他确认时,你只需要将状态从“暂定”更改为“已确认”。

第三个“确认”页面是否是密码请求,或者“您确定/预览”页面吗?我希望不是前者。用户应该已经在第一个“描述”页面的时间被授权。如果最后一页仅用于提供文本预览,则可以通过StackOverflow同时显示预览来消除它。如果这会与'zend'发生冲突,或者你想要用图片显示完整的布局,那么你可以将“预览”按钮放在唯一的页面上。

最干净的设计是单页,其中包含描述的文本字段,可选图片的“选择文件”按钮,“预览”按钮和“结束”按钮。用户可以输入他的描述并可能选择图片文件。在选择“Finalize”或“Preview”之前,不会进行数据传输。如果他感到勇敢,他会点击'Finalize',数据被转移,并标记为'确认'。如果他想要预览,则会发生相同的传输,但数据在数据库中标记为“暂定”。显示页面可能必须更改以包含图片。在上传之前,您不希望在图片的“描述”页面上浪费空间。但是,代码中的一个简单的条件步骤只有在图片可用时才会为图片吐出<IMG...>