ダウンロード結果の処理

ダウンロード結果は、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 に変換しています。