Идентификатор сеанса изменения загрузки файла Jquery

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

Я использую загрузку файла blueimp Jquery, и все работает нормально, но мне нужно сохранять свои изображения в разных папках в зависимости от параметра, отправляемого по 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, перечисленные файлы являются папкой files/, а не папкой files/160/ или номер, который я хочу указать.

Я понял, что могу использовать пользовательские каталоги PHP, и файлы сохраняются в папке, подобной этой 6afa0f7338b14aeed39eb7656f364b4e, которая исходит из session_id(), затем я попытался изменить session_id() с номером папки, которую я хочу таким образом, начало /index.php?customer=160

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

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

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

Заранее спасибо и извините за мой плохой английский.


person notforever    schedule 16.12.2013    source источник
comment
Я думаю, вы пытаетесь сохранить customer_id как переменную сеанса, а затем использовать это как имя своей папки? Это правильно?   -  person user1477388    schedule 17.12.2013


Ответы (2)


В приведенном ниже коде показано, как сохранить идентификатор сеанса с именем 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);
}
person user1477388    schedule 17.12.2013

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

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

в файле 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
));

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

person Gunnar Beister    schedule 03.12.2014