ダウンロード結果の処理
ダウンロード結果は、JavaScript の Blob を使って利用できます。実装方法の詳細は、JavaScript のリファレンスや Web 上の技術情報を参考にしてください。
以下、いくつかの実装例を示します。
画像として表示する例
ダウンロード結果を画像として表示する場合、window.URL.createObjectURL()
を利用できます。この例は、ダウンロード のコードサンプルより、downloadBody()
の success コールバックを抜粋して書き換えています。
-
then( function(params) { var bodyBlob = params[1]; var image = new Image(); image.src = window.URL.createObjectURL(bodyBlob); document.body.appendChild(image); } )
-
success: function(theObject, bodyBlob) { var image = new Image(); image.src = window.URL.createObjectURL(bodyBlob); document.body.appendChild(image); },
この方法以外にも、Object Body の公開 で取得した URL を画像のソースに指定する方法もあります。Object Body の公開はコンテンツをシェアするような用途に向いていますが、URL があれば登録したユーザー以外からも公開したデータを参照できる点にご注意ください。
データ列として扱う例
ダウンロード結果をデータ列として参照したい場合、Blob からのデータ変換が必要です。ここでは、ダウンロードしたデータを BASE64 の文字列に変換する例を示します。
この例は、ダウンロード のコードサンプルより、downloadBody()
の success コールバックを抜粋して書き換えています。
-
then( function(params) { var bodyBlob = params[1]; var reader = new FileReader(); reader.onload = function() { var arrayBuffer = reader.result; var base64 = window.btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer))); }; reader.readAsArrayBuffer(bodyBlob); } )
-
success: function(obj, bodyBlob) { var reader = new FileReader(); reader.onload = function() { var arrayBuffer = reader.result; var base64 = window.btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer))); }; reader.readAsArrayBuffer(bodyBlob); },
Blob のままではダウンロードした値を参照できないため、ArrayBuffer に変換後、btoa()
で BASE64 に変換しています。