Maison > interface Web > js tutoriel > le corps du texte

Comment puis-je récupérer une image en tant que Blob à l'aide de la méthode ajax de jQuery ?

Susan Sarandon
Libérer: 2024-11-14 11:37:02
original
808 Les gens l'ont consulté

How can I retrieve an image as a Blob using jQuery's ajax method?

Utilisation de la méthode ajax de jQuery pour récupérer des images sous forme de blobs

Contexte :
Comme indiqué dans une question précédente, il est nécessaire de récupérez une image à l'aide de jQuery et stockez-la en tant que Blob pour une utilisation ultérieure dans une requête POST. Cependant, les dataTypes de jQuery ne mentionnent pas explicitement les images.

Problème :
Le code actuel dans CoffeeScript (et son équivalent JavaScript) tente de récupérer une image en utilisant jQuery.get() et stockez-le dans un objet FormData en tant que Blob. Cependant, cette approche entraîne des images corrompues en raison d'une inadéquation dans les types de données.

Question :
Existe-t-il une méthode réalisable pour récupérer une image en tant que Blob à l'aide de la méthode ajax de jQuery ?

Réponse :

Approche 1 : Utilisation de XMLHttpRequest natif

Il n'est pas possible de récupérer une image en tant que Blob en utilisant La méthode ajax de jQuery seule. Cependant, l'utilisation de XMLHttpRequest natif fournit une solution. Voici un extrait de code JavaScript :

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200){
        //this.response is what you're looking for
        handler(this.response);
        console.log(this.response, typeof this.response);
        var img = document.getElementById('img');
        var url = window.URL || window.webkitURL;
        img.src = url.createObjectURL(this.response);
    }
}
xhr.open('GET', 'http://jsfiddle.net/img/logo.png');
xhr.responseType = 'blob';
xhr.send(); 
Copier après la connexion

Dans ce code, un objet XMLHttpRequest est créé et son type de réponse est défini sur « blob ». L'événement onreadystatechange est utilisé pour gérer la réponse et créer une URL d'objet pour l'image.

Approche 2 : Utilisation de jQuery 3

Cependant, il convient de mentionner qu'avec jQuery version 3, il est désormais possible de récupérer des images sous forme de Blobs. Voici un extrait de code JavaScript révisé utilisant jQuery 3 :

$.ajax({
    url:'https://images.unsplash.com/photo-1465101108990-e5eac17cf76d?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ%3D%3D&s=471ae675a6140db97fea32b55781479e',
    cache: false,
    xhr:function(){// Seems like the only way to get access to the xhr object
        var xhr = new XMLHttpRequest();
        xhr.responseType = 'blob'
        return xhr;
    },
    success: function(data){
        var img = document.getElementById('img');
        var url = window.URL || window.webkitURL;
        img.src = url.createObjectURL(data);
    },
    error:function(){
        
    }
});
Copier après la connexion

Dans cet extrait, nous utilisons la fonction xhr() de jQuery pour obtenir l'accès à l'objet XMLHttpRequest et définir son type de réponse sur « blob ». Cela nous permet de récupérer l'image sous forme de Blob et de l'utiliser comme nous le souhaitons.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal