【问题标题】:Storing form data with file uploads使用文件上传存储表单数据
【发布时间】:2016-01-18 03:05:36
【问题描述】:

所以我在表单和 mysql 数据库之间构建了一个中间人脚本。

长话短说,有一个表格和一个表格,此脚本处理所有字段,使用提交的表格数据更新表格相应的数据库表格,如果有任何文件,则将文件上传到目标,同时创建指向它的指针在数据库中。

我已经完成了那部分,并且效果很好。但是,我意识到我的想法在这里有一点问题。

当用户提交表单时

[first_name]
[last_name]
[email]
[file1]
[file2]

我首先加载表单数据,然后成功上传文件。

但是如果文件上传不管什么原因失败、太大、类型错误、超时甚至是bug。我留下了表单数据,但没有关联文件。

我可以捕获文件上传错误,然后删除插入的表单数据记录,但如果错误是故意退出怎么办。或者用户在关闭选项卡/浏览器时出错。

有没有办法同时“将表单数据插入数据库表”和“上传文件”,但前提是它们都有 100% 的成功?

如果有人能简单地指出我正确的方向,那将很有帮助。

希望我说得通! 谢谢!

【问题讨论】:

  • 当然可以,但您必须让用户上传并填写相同表单中的字段。否则,您将处理两个完全独立的请求,并且如果其中一个或另一个失败,则必须放入一堆逻辑来清理。
  • 就是这样,同一个表单包含用户输入字段和文件上传字段。

标签: php mysql pdo multipartform-data


【解决方案1】:

要么使用单个表单上传参数和文件,要么在第一个表单提交后使用会话保存参数,而不是直接将数据保存到数据库。

然后您尝试将文件保存到其最终位置。如果失败,您可以让用户重试。如果它成功了,那么你就有了指向它的位置的指针。

然后,您尝试将表单数据保存到数据库中。如果失败,您也可以使用保存文件时获得的路径删除上传的文件。

【讨论】:

  • Hmmmm,如果在上传过程中使用废话,那么反向操作会更容易一些。但是,是否需要会话?
  • 只有在使用多个表单上传数据时才使用会话。
猜你喜欢
  • 1970-01-01
  • 2020-07-16
  • 2021-11-29
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多