HTML5を使ってクライアント側でファイルサイズを確認する方法
HTML5以前と現在のファイルサイズチェックの違い
HTML5が登場する以前は、ファイルサイズの確認にはFlashが使われていました。しかし、現在のWebアプリケーション開発では、セキュリティやパフォーマンス、モバイル対応などの観点からFlashの使用は避けられています。
とはいえ、HTML5のFile APIを利用すれば、Flashに頼ることなくクライアント側だけでファイルサイズを簡単に取得できます。以下のように、イベントリスナーの中にコードを記述するだけで実装可能です。
if (typeof FileReader !== "undefined") {
// files[0] は1つ目のファイルを指します
var s = document.getElementById('myfile').files[0].size;
}
このコードでは、まずFileReaderが定義されているかどうかを判定し、ブラウザがFile APIに対応しているかを確認しています。対応している場合のみ、ファイルオブジェクトのsizeプロパティからサイズ(バイト単位)を取得できます。
イベントリスナーでファイルサイズを動的に取得する
ユーザーがファイルを選択したタイミングでサイズを取得したい場合は、ファイル入力要素(<input type="file">)に対してonchangeイベントリスナーを設定します。
document.getElementById('input').onchange = function() {
// files[0] は1つ目のファイルを指します
var s = document.getElementById('input').files[0].size;
alert(s);
}
このコードを実行すると、ユーザーがファイルを選択した瞬間にそのサイズがバイト数として取得され、アラートで表示されます。
補足:より使いやすくするポイント
- 単位の変換:
sizeプロパティはバイト単位で返されるため、1024で割るとKB、さらに割るとMBに変換でき、表示が分かりやすくなります。 - 複数ファイルへの対応:
multiple属性を付けた入力欄では、files[1]、files[2]のようにインデックスを変えることで複数のファイルサイズを取得できます。 - バリデーションへの活用: 取得したサイズをサーバーへ送信する前にチェックすれば、アップロード上限を超えるファイルを事前に弾くことができ、UXの向上につながります。
File APIはChrome、Firefox、Edge、Safariなど主要なモダンブラウザすべてでサポートされているため、特別なプラグインなしで安全かつ手軽にクライアント側のファイルサイズチェックを実装できます。
-
HTML5のCanvasにSVGファイルを描画する方法
Canvas(キャンバス)にSVGを描画するには、SVGを画像として扱う必要があります。まず、HTMLコンテンツを含めるための<foreignObject>要素を使ってSVGデータを構築し、その後、生成したSVG画像をCanvas上に描画します。 具体的な流れは以下の通りです。 処理の手順 SVG文字列を作成する:<svg>要素の中に<foreignObject>要素を配置し、その中にXHTML名前空間(xmlns=https://www.w3.org/1999/xhtml)を指定したHTMLを記述します。 Blobオブジェクトに変換する:作成したSVG文
-
Pythonで作るWebサイトブロッカー ― 業務時間中にSNSへのアクセスを自動遮断する方法
大手IT企業で働いたことがある方なら、FacebookやYouTube、InstagramといったSNS系のWebサイトが社内からアクセスできないよう制限されていることに気づいた経験があるかもしれません。こうした制限は、サードパーティ製アプリに頼らなくても実現できます。自分専用のオリジナルツールを作れば、好きなWebサイトを自由にブロックできるのです。しかもPythonでWebサイトブロッカーを開発するのは、それほど難しいことではありません。この記事では、指定したWebサイトをブロックするPythonスクリプトの作り方を解説します。前提条件Python 3.x がインストールされていることPy