Intereting Posts
Ошибка при использовании веб-службы:: SoapClient (): операция SSL завершилась неудачей с кодом 1 Создание правильного захвата изображения текущего экрана с использованием jquery или PHP или конвертировать div в pdf Объект класса mysqli_result не может быть преобразован в строку return mysql average Как исправить код состояния сервера: 302 Найден SQL Inject Me Firefox Addon Задать имя страницы с помощью PHP Восстановить массив из квартиры (где дочерние массивы хранят индекс родительского массива) в многомерном? Как исключить файл из глобального поиска PhpStorm (Ctrl + Shift + F) PHP, определяющий кодировку файловой системы Использование прослушивателя событий модели в Laravel 5 Копирование месячных событий FullCalendar на следующий месяц Есть ли способ JavaScript для file_get_contents ()? Как получить доступ к значениям cookie на разных путях одного домена с помощью PHP? В настройках PHP следует memory_limit> upload_max_filesize? Получить вкладку вкладки браузера / идентификатор Определите, является ли 10-значная строка действительной. Amazon ASIN

Перемещение фотографии, загруженной с помощью Dropzone.js и PHP

Я пытаюсь использовать dropzone.js, чтобы добавить простой интерфейс перетаскивания для пользователя, чтобы загрузить до 10 фотографий на мой сервер (в настоящее время WAMP). Я использую PHP 5.4 на задней панели.

Следуя этому руководству, я получил систему, которая работает достаточно, чтобы загружать приемлемые типы файлов в папку «Загружает» в моем корневом каталоге, но я зациклился на том, как сделать фотографии вместо загрузки в уникальный каталог для каждого пользователя.

Когда пользователь доберется до моей страницы загрузки фотографий, они уже создали папку на моем сервере с уникальным именем, путь к которому был сохранен в $ _SESSION ['requestDirectory'].

Вот код, используемый для отображения формы Dropzone:

<form action="<?php echo BASE_URL; ?>photo_uploads.php" class="dropzone" id="photoUploadDropzone"></form> <script type="text/javascript"> Dropzone.options.photoUploadDropzone = { paramName: "file", maxFilesize: 5, // MB maxFiles: 10, addRemoveLinks: true, acceptedFiles: "image/jpeg, image/jpg, image/png, image/gif", accept: function(file, done) { done(); } }; </script> 

Как вы можете видеть, он отправляет данные в файл с именем photo_uploads.php, который имеет следующий код:

 if (!empty($_FILES)) { $tempFile = $_FILES['file']['tmp_name']; $targetPath = $_SESSION['requestedDirectory']; <--HERE'S THE PROBLEM LINE $targetFile = $targetPath. $_FILES['file']['name']; move_uploaded_file($tempFile,$targetFile); } 

Как уже упоминалось выше, этот файл, похоже, не способен извлекать данные из переменной сеанса, но я не уверен, почему. Если я изменю эту строку, чтобы предоставить полный каталог (например, $ targetPath = 'C: // wamp / www / Shops / имя_папки';), он отлично работает, но, конечно, я не могу изменить это имя папки динамически на основе того, какой пользователь использует форму.

Итак, чтобы уточнить, я хотел бы узнать, как загрузить файл на путь, хранящийся в сеансе?

ОБНОВЛЕНИЕ: Решено.

Для кого-то другого с той же проблемой в будущем, это то, что я изменил форму на:

 <form action="<?php echo BASE_URL; ?>photo_uploads.php?folder=<?php echo $_SESSION['photosDir']; ?>" class="dropzone" id="photoUploadDropzone"></form> 

Как предложил Ризван, передав значение $ _SESSION ['photosDir'] в переменной GET, он был доступен после опубликованной формы.

Другое изменение, которое я сделал, это photo_uploads.php, только по следующей строке:

 $targetPath = $_GET['folder']; 

Абсолютно не знаю, почему значение было недоступно непосредственно из Сессии в первую очередь – я никогда не слышал о том, что значения Session выходят из сферы действия, – но счастлив, что эта проблема решена.

Вы можете передать requestDirectory в виде строки запроса с атрибутом действия формы. Таким образом, он может быть доступен.