使用dropzone js插件和会话安全上传多个文件:无并行上传


Uploading multiple files with dropzone js plugin and session security: no parallel uploads?

我正在使用dropzone.js插件(http://www.dropzonejs.com/)这允许拖放文件上传。除了上传URL和parallelUploads(见下文)的一个必需参数外,我只使用Dropzone的默认值。

该网站还使用类似的密码和会话http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL以加强用户安全性。

我遇到的"问题"是,当parallelUploads大于1(默认为2)时,post_file.php似乎并没有捕获所有上传。post_file.php在顶部有一个login_check,以确保上传的文件来自有效用户,并获取用户ID。禁用login_check会使问题消失,但显然这不是一个解决方案。

为什么并行上传会成为服务器端的问题?是不是把会议搞砸了?有什么解决方案吗?

并行上传并不重要,但如果能让较小的文件通过一个较大的文件,那就太好了。

谢谢!

仅仅两天后就回答了我自己的问题!

sec_session_start函数包含session_regenerate_id(true);。为了防止未经授权的上传,上传页面具有会话身份验证。因此,当多个文件同时上传时,会话信息正在重新生成,但没有及时传播,因此只有一个或两个文件会进入。

我在调试多个并行ajax请求时意识到了这个问题。(ajax页面使用相同的授权检查。)

由于不想完全摆脱重新生成,我在sec_session_start中添加了一个参数$ajax=0。通过这种方式,我可以不影响所有其他(非并行活动)页面。我把线路改成了if (!$ajax) session_regenerate_id(true);。现在在并行活动页面(ajax和文件上传)上,我将其称为sec_session_start(1)

ajax和上传都解决了问题。