2013-12-16 3 views
0

Я пытался решить эту проблему в течение нескольких дней без успеха.Jquery File Upload change session id

Я использую blueimp Jquery Upload File и все отлично работает, но мне нужно, чтобы сохранить свои фотографии в разных папках в зависимости от параметра отправить по URL, как /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, и файлы сохраняются в папке, подобной этой 6afa0f7338b14aeed39eb7656f364b4e, которая исходит из session_id(), и я попытался изменить session_id() с номером папки I хочу таким образом в начале этого /index.php?customer=160

session_start(); 
session_id($_GET['customer']); 

но файлы все еще неоспоримые сохраняются в папке 6afa0f7338b14aeed39eb7656f364b4e, и при печати на session_id() является 160.

PHP пользовательские каталоги - хороший метод для достижения того, что я хочу? что я делаю неправильно?

Спасибо заранее и извините за мой бедный английский.

+0

Я думаю, что вы пытаетесь сохранить 'customer_id 'как переменную сеанса, а затем использовать ее как имя вашей папки? Это верно? – user1477388

+0

Да, верно – notforever

ответ

0

Код ниже покажет вам, как сохранить идентификатор сеанса с именем customer_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); 
} 
0

Даже прошло какое-то время с момента последнего ответа на этот вопрос, я хотел бы дать небольшое обновление по этому вопросу. Поскольку версия 5.17 библиотеки jquery-file-upload ther является поддержкой для пользовательских каталогов. В файле UploadHandler.php вы найдете опцию 'user_dirs' => false. Просто установите его в «true», и у вас будут пользовательские каталоги на основе идентификатора сеанса.

Если вы хотите, чтобы ваши собственные пользовательские каталоги не основаны на идентификаторах сеанса, но, например, основанный на идентификаторе пользователя (ваш собственный определенный ключ сеанса), вы можете действовать следующим образом:

в файле index.php (как указано в демонстрации библиотеки загрузки файлов jquery), вы размещаете следующие справа после "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 
)); 

... и то это ... теперь у вас есть свои собственные пользовательские директории для загружаемых файлов