Если вы спрашивали «загружать изображения через AJAX», используя FormData
ответ может быть проще и легко найти в Интернете.
Просьба посмотреть, соответствует ли this link
ваш вопрос.
Чтобы получить изображение из DOM, вы должны использовать то же самое. Но вместо отправки формы вы будете читать элемент DOM img как dataURI
.
Проверьте FIDDLE для HTML в следующий код в:
var originalImage = document.getElementById("image"),
canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
formdata = false,
dummy = document.getElementById('dummy'),
newImage = new Image();
if (window.FormData) {
formdata = new FormData();
}
newImage.onload = function(){
// width and height here should be the same as original image
// detect before-hand, using jQuery(el).width() /.height() on the DOM element
context.drawImage(newImage, 0, 0, 400, 300);
}
newImage.src = originalImage.src;
// traditional ajax and jQuery, no HTML5
if (formdata) {
var canvasToDURI = canvas.toDataURL();
formdata.append("image-data", canvasToDURI);
// yay!, jQuery
$.ajax({
url: "upload.php",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function (res) {
// do some thing !
dummy.innerText = 'Image data sent !';
},
error: function(a, b, c) {
dummy.innerText = 'The following data was not sent due to : ' + b + ' -- '+ c + ' \n\n' + canvasToDURI;
}
});
}
Если FormData
также не поддерживается, вы можете создать форму element
и изменить enctype
в form
на "multipart/form-data"
и отправить данные с помощью JavaScript в AJAX, не отправляя форму.
Взгляните на это: http://www.sitepoint.com/html5-ajax-file-upload/ – karaxuna
Это касается форм. Не знаете, как отправить изображение, начиная с элемента img. – user984003
Вы можете использовать элемент canvas для рисования изображения, а затем получить данные с помощью холста: http://stackoverflow.com/questions/934012/get-image-data-in-javascript –