显示用户上一页上传可供选择

时间:2011-12-13 06:49:26

标签: php mysql linux apache

不确定从哪一个开始,谷歌搜索的一天没有多大帮助。

我正在处理提交表单,我的登录用户可以在表单字段中提交数据并附加大量文件。这些文件应该可供多个提交的用户使用,以免使用重复文件阻塞我的数据库,并且为了方便用户而不必多次重新上载文件。这些文件主要是PDF和文档文档。

我的问题是,让我的用户选择以前提交的文件进行当前提交以及“附加”或将该文件与多个提交相关联的最优雅的解决方案是什么?一些显示以前上传的下拉框似乎是最好的,如果您同意任何代码片段将是非常有用的。

我决定将文档文件作为blob存储在自己的表中。我正在使用godaddy在Linux上运行php和MySQL。

感谢您提前咨询代码示例的位置。只是找不到我想要的东西。这里需要JavaScript吗?

2 个答案:

答案 0 :(得分:0)

以a form开头。添加select以及与该用户关联的文件列表。添加另一个允许文件上载的表单元素。让你所有其他的东西正常。

在页面视图中,使用文件名填充select,并将该文件的行ID放在<option value="file_id_xxx">...中。

在您的服务器脚本中,检测文件是否已上传;如果是,则完成存储文件的过程并将文件引用设置为提交的关联文件;如果没有,请检查是否从下拉列表中选择了一个文件,如果是,请将select中的引用与之前上传的文件一起保存,而不是提交。

Javascript可能有助于禁用select或文件上传input,具体取决于。但这没有必要。

答案 1 :(得分:0)

处理文件上传的更好方法是简单地将文件名(应该生成为唯一的)存储在数据库中,并将实际文件存储在目录中。这样,您就不会将此问题存储在BLOB中。你有没有理由对这种方法这样做?

现在,如果输出一个SELECT表单元素,其中包含存储在数据库中的文件名列表,则用户只需选择一个,您需要做的就是将该文件名存储在新行中。然后,指向该文件名的所有行都将指向同一个文件,而无需上传它。

如果您想在这种情况下允许多个文件上传或“附件”,那么您将需要在数据库中创建一对多关系。每个提交行在另一个表中都有许多行指向它,所有行都引用上传的相应文件。这样任何提交都可以附加零个,1个,2个或更多文件。如果他们选择已经存在的文件,那么,只需复制上述用户名即可。如果是新文件,则应上传该文件并将其名称添加到数据库中。

Javascript不是必需的,但它会很好 - 为您的表单添加交互性。如果您希望允许用户单击“添加新文件”,并显示新的文件上载表单元素。