2010-01-25 63 views
1

我试图添加一个多页面表单,在PHP与Zend框架,其中用户可以列出一个项目到我的网站。在第一页上,他们输入有关该项目的详细信息(然后存储在会话中),第二页可以上传图像,然后第三页可以确认列表。如果他们确认,那么列表会被添加。接受用户上传最佳做法!

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

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

非常感谢您的帮助!

+4

$标题= str_replace函数( '做法', '行为',$标题); //;) – 2010-01-25 02:17:23

+0

哈哈 - 哈哈。哈哈+1 – 2010-01-25 02:17:56

+1

@BillyONeal:你的代码工作!该瓷砖现在已修好。 :) – 2010-01-25 02:57:40

回答

1

既然你提到的Zend Framework,我包括摘录以及链接到文档:

Zend_File_Transfer提供文件上传和下载 广泛 支持。它内置 文件验证程序和 功能,可用 过滤器更改文件。协议适配器允许 Zend_File_Transfer为HTTP, FTP,WEBDAV等传输协议公开相同的 API。

了解更多:http://framework.zend.com/manual/en/zend.file.html

Zend_File_Transfer与该 可以用来提高安全性和 防止可能的攻击 几个文件相关的验证交付。

了解更多: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

我没有用使用'Zend的,所以可以是吹吸。看来这个问题并不是真的取决于'zend'。

3步上传看起来有些尴尬。是否有使用3种形式的理由?看起来这个概念只是导致使用临时文件的困境(这是一个坏主意,顺便说一句)。

至少,我会结合前两步,描述和图片上传。是否有理由不在说明页面上包含“选择文件”按钮?即使你没有照片,看起来特别麻烦。如果用户确实有图片,则实际放置它是合理的,并且描述在他们在数据库中的最终位置被标记为“暂定”。您的演示文稿代码将忽略“暂定”项目(除了所有者以外的任何用户)。这比单独考虑文件要干净得多。如果用户从不确认,最终会进行一些清理工作。但是,如果用户只是暂时分心或断开(的拨号调制解调器的天思软件),这将是很容易让他拿起他离开的地方。您的演示文稿搜索/演示代码会显示用户自己拥有的“暂定”项目。当他确认时,你只需要将状态从“暂定”改为“已确认”即可。

那是第三个“确认”页面输入密码的请求,或“你确定/预览页面?我希望这不是前者。用户在第一个“描述”页面时应该已经被授权。如果最终页面仅用于提供文本预览,则可以通过像StackOverflow一样显示预览来消除它。如果将与“Zend的冲突,或者你想表现跟图片上的完整布局,然后哟可以把一个“预览”按钮,一个独一无二的网页。

最干净的设计是与说明,对于可选的画面,“预览”按钮“选择文件”按钮和“终结”按钮,文本字段的单页。用户可以输入他的描述,也可以选择一个图片文件。在他选择“定稿”或“预览”之前不会发生数据传输。如果他感到很勇敢,他会击中'最终确定',数据被转移,并标记'已确认'。如果他想预览,则会发生相同的传输,但数据在数据库中标记为“暂定”。显示页面可能不得不改变以包含图片。在上传图片之前,您不希望在“说明”页面上浪费空间。但它会在吐出<IMG...>的画面,只有当一个图片是可用的代码的简单条件步骤。

+0

嘿谢谢加里!这正是我之后的那种信息。您的完全正确,它与Zend平台本身没有真正的关系,这是一个更一般的设计决定。现在清除一些东西......是的,确认页面只是显示上传列表的完整示例,而不是验证。我真的很喜欢将它分成3页的想法,因为用户必须添加很多细节并添加多张照片。我想我可以创建一个包含所有元素的大型表单,然后简单地将它分成3个使用JavaScript。还有什么建议? – Nick 2010-02-02 03:18:07