我已经尝试解决这个问题好几天了,但没有成功。
我使用blueimp Jquery File Upload,一切都很好,但我需要根据url发送的参数将图片保存在不同的文件夹中,比如/index.php?客户=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这样的文件夹中,然后我尝试在/index.PHP开始时用我想要的文件夹编号更改session_id?客户=160
session_start();
session_id($_GET['customer']);
但这些文件仍保存在文件夹6afa0f7338b14aeed39eb7656f364b4e中,当我打印session_id()时为160。
PHP用户目录是实现我想要的东西的好方法吗?我做错了什么?
提前谢谢,原谅我英语不好。
下面的代码将向您展示如何保存名为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);
}
尽管这个问题已经有一段时间没有给出最后的答案了,但我还是想对这个问题进行一点更新。由于jquery文件上传库的5.17版本,因此支持用户目录。在UploadHandler.php中,您会发现选项"user_dirs"=>false。只需将其设置为"true",您将拥有基于会话id的用户目录。
如果你想拥有自己的用户目录,而不是基于会话id,而是基于用户id(你自己定义的会话密钥),你可以按照以下方式进行:
在index.php文件中(如jquery文件上传库的Demo中所述),放置以下内容在"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
));
就是这样…现在你有了自己的用户目录,用于上传文件