Я новичок в веб-разработке, и последняя проблема, с которой я столкнулся, – это загрузка файла ajax …
Прямо сейчас у меня есть два поля ввода HTML; ввод файла и кнопка.
<input type="file" name="Frame" id="Frame_"/> <input type="button" name="FrameButton" id="FrameButton_" value="UPLOAD"/>
После нажатия кнопки я вызываю функцию, которая имеет следующий код.
var frame = document.getElementById('Frame_'); var frameImg = frame.files[0]; var form_data = new FormData(); form_data.append('frame', frameImg); jQuery.ajax({ url : './handler.php', type : 'post', data : form_data contentType : false, processData : false, success : alert("Frame Uploaded") });
Когда я var_dump () массив $ _POST и $ _FILES, он показывает оба массива как пустые. Это несмотря на «Запрос полезной нагрузки» в чтении Chrome Dev
Content-Disposition: form-data; Name = "кадр"; имя файла = "GoldFrame.jpg"
Content-Type: image / jpeg
В котором у меня создается впечатление, что это означает, что информация файла, который я выбираю на лицевой стороне, успешно «отправляется» в файл handler.php. Это неправильная интерпретация?
В любом случае, может кто-нибудь, пожалуйста, дать мне ответ на мою проблему? Или, по крайней мере, укажите ресурс, который может иметь мой ответ? Кажется, что есть много похожих вопросов по тем же направлениям, но я не видел одного, у которого есть твердый ответ.
Я использовал iframe для такого рода вещей в прошлом, но это похоже на действительно взломанный метод, и я хотел бы иметь гибкость для использования ajax для этой задачи в будущем.
Помощь приветствуется.
Попробуй это.
Форма (index.html)
<form id="uploadForm"> <input type="file" name="frame" /> <input type="submit" value="UPLOAD" /> </form>
Скрипт (script.js)
$("#uploadForm").on('submit',(function(e) { e.preventDefault(); $.ajax({ url: "handler.php", type: "POST", data: new FormData(this), contentType: false, cache: false, processData: false, success: function(data){ console.log(data); } }); }));
Сторона сервера (handler.php)
<?php var_dump($_FILES);
Вы var_dump () – ваши массивы $ _FILES / $ _ POST в файле handler.php?
Если вы пытаетесь сбрасывать эти переменные в файле с вызовом ajax, это не сработает, потому что AJAX делает внешний интерфейс, а переменные files / post являются переменными на стороне сервера … что означает только обработчик .php будет иметь эти переменные.
Попробуйте добавить вызов var_dump () в handler.php и вывод, который приведет к вызову ajax, и я надеюсь, что вы увидите результаты, которые вы ищете.