Как отправить, созданное пользователем изображение, на сервер с помощью js, ajax или fetch()?
Добрый день. Возникла такая проблема: 1) Пользователь рисует картинку в canvas, программа преобразует его в картинку(png). Надо чтобы данная картинка без перезагрузки странички отправлялась на сервер, чтобы потом можно было открывать её на странице сайта с помощью ссылки.
2) Пользователь записывает аудио. Оно отправляется на сервер без перезагрузки странички и потом также можно было обращаться к данному аудиофайлу по ссылке.
Прошу объяснить и предоставить код.
Спасибо!!!
Павел Корнилов, Просто среди самоучек-новичков бытует мнение что ajax не существует без Jquery или любой другой библиотеки, предоставляющей такую функцию. И судя по тому, как автор задал вопрос - он этого как раз не понимает. Что есть ajax, а что fetch. Поэтому решил уточнить, гляди и автор начнёт понимать чуточку больше :-)
Вадим, таким нужно больше читать. Я не рассматриваю аудиторию из серии "я пишу только в JQuery" как программистов. Это обычные пользователи, которые решили себе в проект поставить модную анимашку. Поэтому подробно им объяснять - смысла нет.
Когда есть время, и я понимаю вопрос, стараюсь давать в таких случаях готовое решение. Так быстрее получается.
Павел Корнилов, нууу тут конечно дело Ваше, однако, все с чего-то начинали. И Jquery хороший проводник для начинающих. Куча готовых решений, документации, всё относительно легко и быстро.
А потом через n-времени ловишь себя на том, что занимаешься оптимизацией сборки вебпака\тришейкингом\ui китом\изучаешь виртуал дом и тд и тп и думаешь.. как же я докатился до такой жизни xD
Здравствуйте ещё раз. Скажите а в этом коде что можно подразумевать под url.
function send_blob_to_server(blob, url) {
var formData = new FormData();
formData.append('file', blob, blob.name);
var xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
alert('Запрос выполнен успешно, ответ сервера: ' + xhr.responseText);
}
else {
alert('При выполнении запроса произошла неизвестная ошибка!');
}
}
}
xhr.send(formData);
}
// Для использовани функции первым параметром передаете Blob,
// а вторым параметром адрес куда надо отослать ваш Blob:
send_blob_to_server(audioBlob, 'Как получить audio файл с сайта?');
Это ссылка на php-файл на котором обрабатывается запрос или что?
Надим Закиров, И в php-файле просто писать move_uploaded_file($_FILES['upfile']['tmp_name'], $destiation_dir ) и т.д.?
Можно создать blob из canvas путём как audio blob.
const blob = new Blob(canvas, {
type: 'image/png'
});
Anton05, по второй ссылке есть пример, как получил Blob из изображения, читайте внимательнее. Насчет move_uploaded_file все верно. С точки зрения php вы отправляйте обычный файл, это в браузере он blob, а на стороне php ничем не отличается от любого другого файла, отправленного через форму.