【问题标题】:php/ajax fileupload process?php/ajax 文件上传过程?
【发布时间】:2011-06-10 04:15:08
【问题描述】:

我想知道处理这个过程的最佳工作流程是什么。

基本步骤是。

用户选择一个 csv 文件并上传它。
然后根据一组规则检查 csv 文件。

如果 csv 文件无效 向用户显示无效的行。
用户可以选择终止上传或删除无效行。

如果csv文件有效,或者strip被点击 向用户显示一个选择文件名的屏幕。

如果文件名已被使用,则用户可以选择
a) 重命名文件(使用他们选择的名称)
b) 替换现有文件。
c) 将文件重命名为 filename_1 等

选择名称后,会在名为 (csv_filename) 的数据库中创建一个表;
然后将来自 csv 的数据输入到表中。
文件已删除。
用户被带到显示文件数据的页面(来自表格)


我的问题是, 这都是通过ajax运行的。 如何处理报告我们正在处理的文件?

我不想在 ajax 响应中传回文件名,因为它太容易被篡改。

我不想创建一个表来保存文件路径并传回一个 id,因为为此创建一个表似乎是一种浪费。

【问题讨论】:

  • 要记住的一件事:如果您必须提示在文件名冲突中做什么,您必须将文件保存在服务器上的某个位置,因为 PHP 将在请求完成时将其删除 -否则用户必须在每次提示后重新上传文件。
  • 当我上传文件时,我将文件保存在一个目录中,该目录会自动删除所有超过 30 分钟的文件。我坚持的部分是,我如何确保我可以在下一个提示符下引用该文件,管理它的最佳方法是什么,传回整个文件名,创建一个具有 id/文件名链接的表,任何其他解决方案?

标签: php ajax file-upload process workflow


【解决方案1】:

在第一步中上传文件时,存在一些问题。它完成了,它有一个文件名,它不能被终止,因为它已经在那里了。它必须是,或者你将如何分析它?

从用户的角度来看,您可以让它看起来像它的工作方式,这可能就是您的意思。

无论如何,要报告您正在处理的文件,请将其存储在会话变量中。

【讨论】:

  • 会话被篡改的难易程度(文件中包含的数据非常敏感,因此我的保护过度)。另外,通过终止上传我实际上是指终止进程,因此,运行一个脚本来删除文件,然后它们被重定向。
  • 关于输入文件名,我的意思是显示文件名。 data_export_users_19.25.2010.csv 在“文件”列表中并不是特别好看。
  • 如果它的共享主机并且您使用的是默认会话处理程序,那么服务器上的任何人都可以读取存储在会话中的数据,因为它只是在 /tmp 文件夹中作为一个平面通常存档。而在客户端,总是有可能通过中间人攻击或其他一些拦截来劫持会话。否则它相当安全。
  • 另外,您的意思是存储文件名还是其中的哈希?
  • 好吧,您必须存储文件名,哈希是一种方式,您将无法再次使用它来引用文件。您可以在将文件名放入会话之前对其进行加密,但这可能与使用数据库表一样麻烦。
猜你喜欢
  • 2012-10-29
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 2012-04-22
  • 2014-03-22
  • 2012-06-05
  • 2017-08-25
  • 2010-10-24
相关资源
最近更新 更多