【发布时间】:2013-08-11 04:38:31
【问题描述】:
假设我们有一个处理创建、阅读、更新和删除文章的 Web 应用程序,并且每篇文章都应该有图片库。我必须在文章和画廊之间建立一对一的关系,在画廊和媒体之间建立一对多的关系。
HTML5 提供了很多功能,比如多上传,所以我想使用这个出色的http://blueimp.github.io/jQuery-File-Upload/ 插件。问题是如何像其他表单的数据一样处理“内存中”的文件上传?
例如,当我们显示创建新文章的页面时,我们应该能够填写文章的数据字段并选择要上传的图像,然后当我们单击保存按钮时,图像应该开始上传,然后表单应该提交。当验证失败时,图像仍应显示在前端,但应保存在服务器端 nothink。
其中一个解决方案是在显示整个表单之前创建类似于“创建实体会话临时 ID”的想法,并且该 ID 可用于创建临时目录以保存上传,因此在成功保存表单后,这些图像可以移动到适当的目录,但是如何使“创建实体会话临时id”?
我认为另一种解决方案是“使用编辑 ID”方法,因为我们可以使用以前保存的画廊 ID 处理上传,但有时我无法用画廊保存新的空白文章,因为某些字段应该db 中不能为空。
对于我在自述文件中看到的 https://github.com/thoughtbot/paperclip gem 的 Rails:
Paperclip 旨在作为 Active Record 的简单文件附件库。其背后的目的是使设置尽可能简单,并尽可能像对待其他属性一样对待文件。这意味着它们不会保存到磁盘上的最终位置,如果设置为 nil,它们也不会被删除,直到调用 ActiveRecord::Base#save。
我的问题是它是如何工作的?
【问题讨论】:
标签: php symfony upload jquery-file-upload