Używam tegoJak umieścić dane binarne png w znaczniku img i wyświetlić je jako obraz?
$.ajax({
type: "GET",
url: 'template/bump1/purse.png',
datatype:"image/png",
success: function (data) {
var reader = new FileReader();
reader.onload = function (e) {
var img = document.getElementById("CaptchaImg");
img.src = e.target.result;
};
reader.readAsDataURL(data);
//$('#CaptchaImg').attr('src', data);
}
});
pobrać obraz, i to wychodzi w formacie binarnym, wygląda tak
node.js wraca jako
WriteHeaderMode('image/png', res, 200);
res.end(data, 'binary');
Ale teraz, jak umieścić to w tagu obrazu i pokazać go jako obraz. Uwaga: I nie chcę, aby miał dane zwracane jako kodowanie base64, musi być binarny. Jestem w porządku, konwertując plik binarny na base64 po stronie klienta.
Po przekazaniu go do readAsDataURL
, podano wyjątek TypeError
.
Dzięki
EDIT
var img = document.getElementById("CaptchaImg");
var reader = new FileReader();
reader.onload = function(e) {
//img.src = e.target.result;
$("body").html(e.target.result);
};
reader.readAsDataURL(new Blob([data]));
to wydaje się przekształcić go w kodowaniu base64, która rozpoczyna się data:application/octet-stream;base64,
ale nie wyświetla obrazu ...
nie zbadali tego dużo, ale zgaduję, ponieważ 'aplikacja/oktet-stream' jest w zasadzie mówiąc:„pobierz mnie”, można spróbować zrobić prosto' .replace ("application/octet-stream", "image/png"); '. Warto spróbować lol – Deryck
Próbowałem, ale to nie zadziałało. – sneaky
Cóż, przynajmniej wiem, że nie byłem szalony, sugerując to. Ale zamiast próbować naprawić to jako problem, może spróbuj ponownie przemyśleć logikę? Po prostu ustawiając atrybut 'src' na URL obrazu, zaczniesz pobierać obraz, więc zamiast AJAX po prostu zrób to, – Deryck