#javascript #ajax #upload #mp3
Вопрос:
Я создаю веб-страницу, на которую пользователи будут загружать выбранный mp3-файл. Я пытаюсь сделать это в JavaScript / AJAX, как показано ниже:
//File upload button
var uploadBtn = document.createElement("input");
uploadBtn.innerHTML = "Browse...";
uploadBtn.id = "fileToUpload";
uploadBtn.type = "file";
// Create a submit button
var submitButton = document.createElement("button");
submitButton.innerHTML = "Submit";
submitButton.id = "submitButton";
Как только они выберут свой файл и нажмут кнопку отправить (обратите внимание, что mp3File и formdata являются глобальными переменными, созданными в другом месте), этот код будет выполнен:
mp3File = document.getElementById("fileToUpload").files[0];
formdata = new FormData();
formdata.append("mp3File", mp3File);
var req = new XMLHttpRequest();
req.open("POST", 'mp3_uploads/', true);
req.send(formdata);
Я получаю эту ошибку каждый раз:
СООБЩЕНИЕ XHR [путь к моему сайту здесь]/mp3_uploads/ — — — > HTTP/1.1 — 404 — Не Найдено
Я получаю эту ошибку, даже если каталог существует на моем сервере. Обратите внимание, что я также могу загружать mp3-файлы через отдельный HTML-файл, который имеет форму / ссылается на файл PHP, но я бы предпочел не делать этого таким образом, если смогу этого избежать.
Мы будем очень признательны за любую помощь.
Ответ №1:
Пока каталог существует, это не сценарий. И каталог не принимает запрос на публикацию, поэтому вы получите сообщение об ошибке 404.
Вам следует создать PHP-скрипт (или другой язык на стороне сервера), который обрабатывает файл и сохраняет его в каталоге.
Комментарии:
1. Спасибо. Я переключил его на использование AJAX (который вызывает PHP-файл), но он продолжал не работать (и даже не попадал в PHP-файл). Я обнаружил проблему: даже если FormData не пуста и регистрируется в файле AJAX, она не будет отправляться через PHP, если вы явно не создадите форму обратно на странице JavaScript. Поэтому я просто создал реальную форму на странице JavaScript, и это сделало свое дело (даже не потребовав промежуточного шага AJAX, потому что он может напрямую вызывать PHP-файл). В любом случае, спасибо, потому что в конечном счете это помогло мне решить эту проблему. 🙂
2. Не за что! Не забудьте принять мой ответ, если он вам помог.