Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php/ajax文件上传过程?_Php_Ajax_File Upload_Process_Workflow - Fatal编程技术网

php/ajax文件上传过程?

php/ajax文件上传过程?,php,ajax,file-upload,process,workflow,Php,Ajax,File Upload,Process,Workflow,我想知道处理这个过程的最佳工作流程是什么 基本步骤如下 用户选择csv文件并将其上载。 然后根据一组规则检查csv文件 如果csv文件无效 将向用户显示无效的行。 用户可以选择终止上载或删除无效行 如果csv文件有效,或单击了条带 用户将看到一个选择文件名的屏幕 如果已使用文件名,则用户可以选择 a) 重命名文件(根据他们选择的名称) b) 替换现有文件。 c) 将文件重命名为filename_1等 选择名称后,将在数据库中创建一个名为(csv_filename)的表 然后将csv中的数据输入表

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

基本步骤如下

用户选择csv文件并将其上载。
然后根据一组规则检查csv文件

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

如果csv文件有效,或单击了条带 用户将看到一个选择文件名的屏幕

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

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


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

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


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

在第一步上载文件时,这会出现一些问题。它完成了,它有一个文件名,不能终止,因为它已经存在了。它必须是,或者你将如何分析它

从用户的角度来看,你可以让它看起来像是这样工作的,这可能就是你的意思


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

要记住一件事:如果您必须提示在文件名冲突中执行什么操作,则必须将文件保存在服务器上的某个位置,因为PHP会在请求完成时删除它,否则用户必须在每次提示后重新上传文件。当我上传文件时,我会将文件保存在一个目录中,该目录会自动删除所有超过30分钟的文件。我一直关注的问题是,如何确保我能在下一次提示时引用该文件,管理该文件的最佳方法是什么,传回整个文件名,创建一个具有id/文件名链接的表,还有其他解决方案吗?会话有多容易被篡改(文件中包含的数据非常敏感,因此我的过度保护). 另外,通过终止上传,我实际上是指终止进程,因此,运行一个脚本来删除文件,然后重定向它们。关于输入文件名,我指的是显示文件名。在“文件”列表中查看data_export_users_19.25.2010.csv不是特别好。如果它是共享主机,并且您使用的是默认会话处理程序,那么服务器上的任何人读取存储在会话中的数据都有点微不足道,因为它通常只是作为平面文件存在/tmp文件夹中。在客户端,总是有可能通过mitm攻击或其他截获来劫持会话。另外,你的意思是存储文件名还是散列文件?你必须存储文件名,散列文件是一种方式,你不能再次使用它来引用文件。您可以在将文件名放入会话之前对其进行加密,但这可能与使用数据库表一样麻烦。