使用jqUploader时$ _SESSION不可用

时间:2010-09-17 06:43:23

标签: php jquery

我正在使用PHP和jQuery作为上传器。我有一个很大的问题,并希望得到一些关于如何最好地处理这两个问题的意见。

我正在使用一个PHP会话变量,用于在jquery上传器完成后更改文件名。 jquery“url”指向处理实际上载的PHP函数。当我使用jquery上传器上传图像时,会话变量永远不可用。我假设因为上传者本身没有使用会话。

如何解决此问题?我需要使用该会话变量来更改文件名。

编辑:我正在使用jqUploader

这是代码

function jqUploadPhoto( ){
    $picSize = '50550500';
    $picDir  = '/photos';

    $temp = $_FILES['uploadfile']['name'];
    ... substr()... convert old name to new name

    $file = $_SESSION['name'].$ext; // This is set and can be echoed when this func is used from a browser. Not available in JQ

    if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file) == false){ // This dies because the filename isn't available.
      echo 'NOTOK';
    }

}

1 个答案:

答案 0 :(得分:0)

我在上传时遇到了这个问题。

问题

您的浏览器向您的网站发出请求,会话已启动,并且已设置包含您的会话ID的Cookie。

然后使用Flash进行上传,请注意Flash不是您的浏览器,而是充当新请求。因此,会创建一个新的会话ID,并创建一个新的cookie,为您提供两个不同的会话。

解决方案

我通过在页面中设置会话ID来解决这个问题,例如。在隐藏的输入中,并在Flash进行上传时将此会话ID附加到请求中。您需要在上传时使用session_id() - http://php.net/manual/en/function.session-id.php检测此会话ID。然后,这将复制浏览器创建的会话。

希望有所帮助。