Jquery文件上载更改会话ID

时间:2013-12-16 14:26:59

标签: php file-upload sessionid jquery-file-upload blueimp

我一直试图解决这个问题好几天没有成功。

我正在使用blueimp Jquery文件上传,一切正常,但我需要将图片保存在不同的文件夹中,具体取决于网址发送的参数,如/index.php?customer=160

<input type="hidden" name="customer" value="<?php print $_GET["id_cliente"];?>">

我在表单中创建了隐藏字段,并将其放入uploadhanndler.php。

/files/'.$_POST['customer'].'

,这里一切顺利,文件保存在我想要的文件夹上,但是下次打开窗口/index.php?customer=160时,列出的文件是文件/文件夹而不是文件/ 160 /文件夹或我要列出的号码。

我意识到我可以使用PHP用户目录,并且这些文件保存在来自session_id()的文件夹中,如6afa0f7338b14aeed39eb7656f364b4e,然后我尝试用我想要的文件夹编号更改session_id()这种方式在/index.php?customer=160

的开头
session_start();
session_id($_GET['customer']);

但文件仍保存在文件夹6afa0f7338b14aeed39eb7656f364b4e中,当我打印session_id()为160时。

PHP用户目录是实现我想要的好方法吗?我做错了什么?

提前致谢并原谅我可怜的英语。

2 个答案:

答案 0 :(得分:0)

下面的代码将向您展示如何保存名为customer_id的会话ID,然后将其用作文件夹名称。如果您需要更多帮助,请与我们联系。

// start (or restart) the session
session_start();

// set the customer id session var
$_SESSION['customer_id'] = // set this variable something that you've retrieved from the DB

// create a folder if it doesn't already exist
$dir = '/httpdocs/mySite/customers/' . $_SESSION['customer_id'];
if (!file_exists($dir)) {
    mkdir($dir, 0777, true);
}

答案 1 :(得分:0)

即使已经有一段时间了,因为这个问题已经给出了最后一个答案,我想对这个问题做一个小小的更新。由于jquery-file-upload库的版本5.17是对用户目录的支持。 在UploadHandler.php中,您会找到选项'user_dirs'=&gt;假。只需将其设置为“true”,您将拥有基于session-id的用户目录。

如果您希望自己的用户目录不是基于会话ID,而是例如根据用户ID(您自己定义的会话密钥),您可以按以下方式继续:

在index.php文件中(如jquery-file-upload库的演示中所述) 紧跟在'require('UploadHandler.php');“

之后
class CustomUploadHandler extends UploadHandler {
    protected function get_user_id() {
        @session_start();
        return $_SESSION[*<your own user id session key>*];
    }
}

接下来是:

$upload_handler = new CustomUploadHandler(array(
    'user_dirs' => true
));

......就是这样......现在你有了自己的上传文件的用户目录