Intereting Posts
Невозможно запросить разрешение на использование Facebook Login API «publish_actions» даже для основного администратора jQuery – Обновить таблицу Как выбрать уникальное значение из столбца на основе нескольких идентификаторов во многих случаях? (T_ENCAPSED_AND_WHITESPACE), ожидая идентификатор (T_STRING) или переменную (T_VARIABLE) или номер (T_NUM_STRING) Функция PHP crypt () в JavaScript Сообщение PHP Form всегда пустое PHP SimpleXML получает innerXML Как структурировать javascript при включении другого php-файла PHP: использование REGEX для получения имени tablen из запроса mysql Магический метод PHP __call на подклассах Отправка запросов POST без ожидания ответа? PDO: Недопустимый номер параметра: смешанные имена и позиционные параметры – знак вопроса в комментариях Как заменить несколько значений в php Есть ли более простой способ убедиться, что значение в массиве равно чем-то php? Почему функция addslashes () не работает в моем массиве в php?

как получить загруженный путь изображения в php и ajax?

У меня простая форма:

<input type="hidden" name="MAX_FILE_SIZE" value="2097152" id="MAX_FILE_SIZE"> <input type="file" name="file_upload" id="file_upload" class="picture_main"> <input type="submit" name="upload_picture" id="upload_picture" value="Submit"> 

Я пытаюсь загрузить ajax:

 submit.on("click", function(){ var file = $('#file_upload').val(); uploadImageAjax(file); return false; }); var uploadmageAjax = function(file) { $.ajax({ type: "POST", url: "/test/index/imageupload", data: { 'file': file }, dataType: "json", success: function (data) { console.log(data); } }); } 

я вернусь, например, file: "C:\fakepath\weirdan003-10.jpeg"

но я не уверен, что это за fakepath !?

если бы я делал это только в php, я бы получил изображение следующим образом:

 if (isset($_POST['upload_picture']) ) { $data = $formImageUpload->getValues(); $pictureName = $data['picture']; .... 

а затем загрузите его.

Так что я хочу выяснить, является ли ajax вызывать POST для этого действия правильным файлом, поэтому я могу загрузить его на диск.

будет $('#file_upload').val(); удерживайте $ _FILE ??

есть идеи?

благодаря

 var file = $('#file_upload').val(); 

Это вернет только путь к файлу на клиентской машине. для причины секретности он возвращается, как c: \ fakepath \ file_name.ext. Если я правильно помню, в некоторых старых браузерах можно было получить реальный путь. Но тем не менее, это не поможет вам получить файл на сервере.

Для загрузки стиля ajax вы можете использовать некоторые из плагинов, которые вы рекомендовали. Или просто используйте плагин jQuery Forms . Он будет очень похож на $.ajax .

Теперь, когда файл загружен правильно, вы найдете всю необходимую информацию об этом в $_FILES

В вашем случае это будет что-то вроде $_FILES['file_upload'] где 'file_upload' – это имя ввода вашего файла.

Теперь вы можете переместить его из временного хранилища с помощью move_uploaded_file . И делайте все, что хотите, с этим файлом

EDIT: И я вижу, вы используете Zend. Взгляните на это, как работать с элементом FileUpload на стороне сервера. С Zend вы можете использовать методы FileUpload вместо move_uploaded_file

jQuery ajax не поддерживает асинхронные загрузки файлов. См. Файл загрузки jQuery с использованием метода ajax jQuery (без плагинов) .

Если вы хотите использовать загрузку файла ajax, рекомендуется внедрить плагины:

Для клиентской стороны я предлагаю вам использовать плагин.

Для стороны сервера вам нужно будет обработать его для чтения из потока. Я думаю, что есть полный пример (клиентская и серверная сторона) на valums git .