2

画像を gif として返す POST リクエストがあります。私の知る限り、応答は base64 でエンコードされたテキストではありません。では、画像を img の src タグに割り当てるにはどうすればよいですか?

を使用して表示しようとしたため、base64でエンコードされていないと言う理由でdata:image/gif;base64,"+ data、結果が得られません。

それで、jquery.base64プラグインを使用して応答をエンコードしようとしました(ただし、無効な文字について不満がありました)。

応答テキストは、応答テキストビューを見ると、フィドラーで次の「GIF87a��」のようになります。画像ビューは画像をきれいに表示します。

サーバーにアクセスして、base64で返すように指示することもできません。

どんなアイデアや助けも大歓迎です。

前もって感謝します。

4

2 に答える 2

5

それは完全に可能です:

ここに例があります:

var req = new XMLHttpRequest;
req.overrideMimeType('text/plain; charset=x-user-defined');
req.open('GET', "http://jonathanleighton.com/images/me.jpg", !1);
req.send(null);
for (var responseText = req.responseText, responseTextLen = responseText.length, binary = "", i = 0; i < responseTextLen; ++i) {
  binary += String.fromCharCode(responseText.charCodeAt(i) & 255)
}
image.src = 'data:image/jpeg;base64,'+window.btoa(binary);

これはインターネットからの例ですが、動作することを確認しました。「POST」もまったく同じように機能するはずです。

于 2013-02-06T20:22:48.323 に答える
1

@xchg.ca からの回答のおかげで、jquery ajax 呼び出しでこれを行うことができました。

$.ajax({
  type: "GET",
  url: "imageURL",
  beforeSend: function (xhr) {
    xhr.overrideMimeType('text/plain; charset=x-user-defined');
  },
  success: function (result, textStatus, jqXHR) {       
    if(result.length < 1){
        alert("The thumbnail doesn't exist");
        $("#thumbnail").attr("src", "data:image/png;base64,");
        return
    }

    var binary = "";
    var responseText = jqXHR.responseText;
    var responseTextLen = responseText.length;

    for ( i = 0; i < responseTextLen; i++ ) {
        binary += String.fromCharCode(responseText.charCodeAt(i) & 255)
    }
    $("#thumbnail").attr("src", "data:image/png;base64,"+btoa(binary));
  },
  error: function(xhr, textStatus, errorThrown){
    alert("Error in getting document "+textStatus);
  } 
});
于 2015-02-05T08:17:19.570 に答える