我正在使用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,以确保上传的文件来自有效用户并获取userID。禁用login_check会使问题消失,但显然这不是解决方案。
为什么并行上传会成为服务器端的问题?它搞乱了会议的魔力吗?对解决方案的任何想法?
并行上传不是关键任务,但它很好,所以较小的文件可以传递一个更大的文件。
谢谢!
答案 0 :(得分:0)
仅在2天后回答我自己的问题!
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和上传都解决了问题。