我正在使用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';
}
}
答案 0 :(得分:0)
我在上传时遇到了这个问题。
问题
您的浏览器向您的网站发出请求,会话已启动,并且已设置包含您的会话ID的Cookie。
然后使用Flash进行上传,请注意Flash不是您的浏览器,而是充当新请求。因此,会创建一个新的会话ID,并创建一个新的cookie,为您提供两个不同的会话。
解决方案
我通过在页面中设置会话ID来解决这个问题,例如。在隐藏的输入中,并在Flash进行上传时将此会话ID附加到请求中。您需要在上传时使用session_id()
- http://php.net/manual/en/function.session-id.php检测此会话ID。然后,这将复制浏览器创建的会话。
希望有所帮助。