JavaScript プログラミング講座
















Blob URL Scheme 




Blob URL Scheme とは?
Blob URL Scheme を生成する
Blob URL Scheme を破棄する







 




Blob URL Scheme 


 




Blob URL Scheme 


 

Blob URL Scheme HTML5 
 
http://www.w3.org/TR/FileAPI/#creating-revoking (Working Draft)

 

Blob URL Scheme URL  

 

 blob: 
 


 

Blob URL Scheme 
 
JavaScript 

 

Data URI Scheme 使

 

Blob URL Scheme 


 

URL Blob URL Scheme 

 

<IMG>  src 

 

XMLHttpRequest 

 

使

 


 

Blob Blob URL Scheme 

 



 

Blob XMLHttpRequest 使
 


 



 


 
ArrayBuffer Blob 使

 

Blob URL Scheme 
 


 



 

<AUDIO> 
 
Blob URL Scheme 

 



 

Blob URL Scheme 
 
 src 

 


 


 


 

File Blob URL Scheme 

 



 

Blob URL Scheme 
 


 

1file: 
 
file: 

 


 

ArrayBuffer Blob 
 
Blob Blob URL Scheme 

 

 Data URI Scheme 

 

Data URI Scheme 使
 
Data URI Scheme 

 

Data URI Scheme 
 
100MByte 

 

Blob URL Scheme 
 


 

 Blob URL Scheme 調


 

window.URL 

 

Opera(Presto ) 
 
Safari 5 

 

 







 

 




Blob URL Scheme 


 

 




Blob URL Scheme 



window.URL.createObjectURL() 使

 


window.URL.createObjectURL( Blob ) :String
01引数 BlobBlob や File オブジェクトを指定する。
戻り値 StringBlob URL 文字列が得られる。


 





<html>
  <body>

    <form>

      <input type="file" id="aaa" accept="image/bmp,image/gif,image/jpeg,image/png" >

    </form>

    <script type="text/javascript">
    <!--
 // "aaa" というID属性のエレメントを取得する
 var input_file = document.getElementById("aaa");

 // ------------------------------------------------------------
 // 値が変化した時に実行されるイベント
 // ------------------------------------------------------------
 input_file.onchange = function (){

  // ファイルが選択されたか
  if(!(input_file.value)) return;

  // Blob URL Scheme をサポートしているか
  if(!(window.URL)) return;

  // ------------------------------------------------------------
  // File オブジェクトを取得(HTML5 世代)
  // ------------------------------------------------------------
  // ファイルリストを取得
  var file_list = input_file.files;
  if(!file_list) return;

  // 0 番目の File オブジェクトを取得
  var file = file_list[0];
  if(!file) return;

  // ------------------------------------------------------------
  // Blob URL Scheme を生成する
  // ------------------------------------------------------------
  var blob_url = window.URL.createObjectURL(file);

  // 出力テスト
  console.log(blob_url);

  // ------------------------------------------------------------
  // 画像を表示する
  // ------------------------------------------------------------
  // HTMLImageElement オブジェクトを作成する
  var image = new Image();

  // Blob URL を指定して、画像の読み込みを開始する
  image.src = blob_url;

  // BODY のノードリストに登録
  document.body.appendChild(image);

 };

    //-->
    </script>

  </body>
</html>



 


XMLHttpRequest 使


// ------------------------------------------------------------
// Blob オブジェクトを作成する
// ------------------------------------------------------------
var blob = new Blob(["あいうえお"]);

// ------------------------------------------------------------
// Blob URL Scheme を生成する
// ------------------------------------------------------------
var blob_url = window.URL.createObjectURL(blob);

// 出力テスト
console.log(blob_url);

// ------------------------------------------------------------
// XMLHttpRequest を使ってテキストとして読み込む
// ------------------------------------------------------------
var xhr = new XMLHttpRequest();
xhr.onload = function(e){
 console.log(xhr.responseText);
};
xhr.open("GET",blob_url);
xhr.send();



 







 

 




Blob URL Scheme 


 




Blob URL Scheme 



window.URL.revokeObjectURL() 使

 


window.URL.revokeObjectURL( "Blob URL" ) :Void
01引数 StringBlob URL 文字列を指定する。
戻り値 Voidなし。


 


Blob URL Scheme 


// Blob URL Scheme をサポートしている
if(window.URL){

 // ------------------------------------------------------------
 // Blob オブジェクトを作成する
 // ------------------------------------------------------------
 var blob = new Blob(["あいうえお"]);

 // ------------------------------------------------------------
 // Blob URL Scheme を生成する
 // ------------------------------------------------------------
 var blob_url = window.URL.createObjectURL(blob);

 // 出力テスト
 console.log(blob_url);

 // ------------------------------------------------------------
 // Blob URL Scheme を破棄する
 // ------------------------------------------------------------
 window.URL.revokeObjectURL(blob_url);

}