HTML 5 で追加された FileReader を利用すると JavaScript からローカルファイルの一部にアクセスすることができるようになります。一般的にはアップロードするファイルを事前にプレビューするなどの用途でよく使われます。
下記サンプルはファイル選択時に画像プレビューを表示するプログラムです。
古いブラウザでは FileReader が利用できないためその場合は何もしない点に注意して下さい。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Preview Demo</title>
<script>
document.addEventListener('DOMContentLoaded', function(){
// アップロードボタン
var fileSelector = '.image-upload';
// プレビュー画像のクラス名
var previewSelector = '.preview';
// プレビューするファイルタイプ
var fileTypes = [
'image/jpeg', 'image/jpg', 'image/png',
'image/gif', 'image/bmp'
];
if( typeof FileReader == 'undefined' ){
return;
}
var reader = new FileReader();
reader.addEventListener('load', function(event) {
preview.setAttribute('src', event.target.result);
});
var fileInputs = document.querySelectorAll(fileSelector);
for(var i = 0; i < fileInputs.length; i++){
var fileInput = fileInputs[i];
var input = fileInput.querySelector('input');
var preview = fileInput.querySelector(previewSelector);
if(!preview) return;
preview.setAttribute('data-fallback-src', preview.getAttribute('src'));
input.addEventListener('change', function(){
if(input.files && input.files[0] && fileTypes.indexOf(input.files[0].type) >= 0) {
reader.readAsDataURL(input.files[0]);
} else {
preview.setAttribute('src', preview.getAttribute('data-fallback-src'));
}
});
}
});
</script>
<style>
.image-upload .preview {
display: block;
width: 100%;
max-width: 100px;
height: auto;
}
</style>
</head>
<body>
<div class="image-upload">
<img class="preview" src="noimage.jpg" alt="Preview">
<input name="image" type="file">
</div>
</body>
</html>
Similar Posts:
- [JS][jQuery]フォームから複数のファイルをアップロード(入力欄の動的追加)
- [PHP]画像ファイルのアップロードとGDを使ったリサイズ
- Flash ファイルアップロード AS3.0
- [JS]アニメーション付きで要素の上下を入れ替える
- [PHP]似た画像を検索して近い順番に並べる(類似画像検索)
- [PHP]GDで作った画像をファイル化せずに直接<img>タグで表示する
- [PHP][HTML, CSS]画像を隙間なく並べて表示
- [PHP]HSV(HSB)色空間を比較して似た色合いの画像を検索する