SYNCERのロゴ
アイキャッチ画像

URL.createObjectURL() - オブジェクトのURLを作成する

createObjectURL()は、URLのメソッドです。BlobFileを参照するための一時的なURLを作成します。

概要

名前
createObjectURL
所属
URL
IDL
static DOMString createObjectURL(Blob blob);
仕様書
https://w3c.github.io/FileAPI/#dfn-createObjectURL

説明

引数(blob)には、URLを作成するBlobFileを指定する。作成したオブジェクトのURLを返す。

このURLはドキュメントが生きている間だけ有効であり、別ページに遷移するなどしてアンロードすれば無効となる。

作成したURLはrevokeObjectURL()で削除できる。不要になったURLはその都度、削除してメモリを解放するのが望ましい。

チュートリアル

このメソッドはコンストラクタ関数です。

URL.createObjectURL( blob ) ;

デモ

URL.createObjectURL()のデモです。ローカルの画像ファイルを選択してみて下さい。プレビュー画像をクリックすると、URLを別ウィンドウで開きます。このiframe要素のドキュメントが失われると、URLも無効になるのを確認しましょう。ファイルが当サイトのサーバーにアップロードされるようなことはありません。

<!-- このコードは編集できます。 -->

<!DOCTYPE html>
<html>
<style>
body { word-break: break-all ; tab-size: 2 ; }
div#result { white-space: pre-wrap ; }
</style>
<body>
<input type="file" multiple id="hoge">
<hr>
<p><button id="revokeObjectURL">削除する [revokeObjectURL()]</button></p>
<hr>
<div id="result"></div>
<script>
document.getElementById( "hoge" ).onchange = function () {
	document.getElementById( "result" ).textContent = "" ;
	objectUrls = [] ;

	var fileList = this.files ;

	for( var i=0,l=fileList.length; l>i; i++ ) {
		var objectUrl = URL.createObjectURL( fileList[i] ) ;

		console.log( objectUrl ) ;
		appendHTML( '<a href="' + objectUrl + '" target="_blank"><img src="' + objectUrl + '"></a>' + "<br>" ) ;
		appendHTML( objectUrl + "<br>" ) ;

		objectUrls.push( objectUrl ) ;
	}
}

document.getElementById( "revokeObjectURL" ).onclick = function () {
	objectUrls.forEach( function ( url ) {
		URL.revokeObjectURL( url ) ;
	} ) ;
}

function appendHTML ( html ) {
	document.getElementById( "result" ).innerHTML += html ;
}

var objectUrls = [] ;
</script>
</body>
</html>

サポート状況

ChromeFirefoxSafariEdgeIEOperaiOS SafariAndroid
6.0+ 10+ 15+ 6.0+ 4.0+
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年10月20日 (金)
コンテンツを公開しました。