jsはFileReaderを使用してローカルファイルまたはBLOBを読み取ります

jsはFileReaderを使用してローカルファイルまたはBLOBを読み取ります

FileReaderはローカルファイルまたはBLOBを読み取ります

FileReader オブジェクトは、ユーザーのコンピューターに保存されているファイルの内容を非同期で読み取る機能を提供します。読み取るファイルまたはデータを指定するには、File オブジェクトまたは Blob オブジェクトを使用します。FileReader インターフェイスは、ファイルを読み取るためのメソッドと、読み取り結果を含むイベント モデルを提供します。

1. FileReaderの使用

注: 古いブラウザとの互換性を確保する必要がある場合は、FileReader オブジェクトが存在するかどうかを確認する必要があります。

if (window.FileReader) {
 リーダーを新しいFileReader()にします。
} それ以外 {
 console.log('お使いのブラウザはファイルの読み取りをサポートしていません');
}

2. FileReader メソッド

方法効果パラメータ戻り値
アボート()読み取り操作を中止するなしなし
配列バッファとして読み込む()ファイルとBlobのコンテンツを読み取るファイル/ブロブ結果プロパティはArrayBufferデータオブジェクトのファイルの内容を返します。
readAsBinaryString()[W3 で非推奨]ファイルとBlobのコンテンツを読み取るファイル/ブロブ結果プロパティは元のバイナリデータのファイル内容を返します。
データURLとして読み込み()ファイルとBlobのコンテンツを読み取るファイル/ブロブ

結果属性は、データ:URLのBase64文字列形式でファイルの内容を返します。

テキストとして読み込む()ファイルとBlobのコンテンツを読み取るファイル/ブロブ結果プロパティはファイルの内容を文字列として返します

3. FileReaderプロパティ

  • FileReader.error (読み取り専用): ファイルの読み取り中に発生したエラーを示す例外
  • FileReader.readyState (読み取り専用): FileReader の状態を表す数値
価値ステータス名説明する
0空のデータが読み込まれていません
1読み込み中データの読み込み
2終わり

データの読み込みが完了しました

  • FileReader.result (読み取り専用): ファイルの内容が読み取られます。このプロパティは、データが読み取られた後にのみ有効です。ファイルの内容の形式は、読み取り方法によって決まります。

4. FileReader イベント

  • FileReader.onabort : 読み取りが中止されたときにこのイベントがトリガーされます。
  • FileReader.onerror : 読み取り中にエラーが発生したときにこのイベントがトリガーされます。
  • FileReader.onload : 読み取りが完了するとこのイベントがトリガーされます。
  • FileReader.onloadstart : このイベントは、読み取り操作が開始されたときにトリガーされます。
  • FileReader.onloadend : このイベントは、読み取りが完了したときにトリガーされます (失敗した場合と成功した場合の両方でトリガーされます)。
  • FileReader.onprogress : このイベントは読み取り中にトリガーされます。

知らせ:

1. セキュリティ上の理由により、FileReader は入力によって渡されたファイルまたは Ajax 読み取りサーバーによって返されたファイルを読み取りますが、指定されたパスにあるファイルを読み取ることはできません。

2. FileReader は webworker で使用できます。

<!DOCTYPE html>
<html class="no-js">
	<ヘッド>
		<メタ文字セット="utf-8" />
		<meta http-equiv="X-UA-compatible" content="IE=edge" />
		<タイトル></タイトル>
		<meta name="説明" コンテンツ="" />
		<meta name="viewport" content="width=デバイス幅、初期スケール=1" />
		<link rel="スタイルシート" href="" />
	</head>
 
	<本文>
		<input type="file" id="myFile" />
		<script type="text/javascript">
			if (window.FileReader) {
				var リーダー = 新しい FileReader();
			} それ以外 {
				console.log('お使いのブラウザはファイルの読み取りをサポートしていません');
			}
			var myFile = document.querySelector('#myFile');
			myFile.onchange = 関数 () {
				var ファイル = myFile.files[0];
				reader.readAsDataURL(ファイル);
				reader.onload = 関数(){
					var data = reader.result; //base64 形式のファイル コンテンツ };
                reader.onerror = 関数(){
                    console.log('読み取りに失敗しました');
                    コンソールログ(リーダー.エラー);
                }
			};
		</スクリプト>
	</本文>
</html>

FileReader を使用してローカル ディスクのファイルを読み取る際の問題

js ファイルを実行します (js ファイルをプロジェクトの src の下に配置します)

(1) java.net.URL url = TestScriptEngine.class.getClassLoader().getResource("a.js");
(2)//System.out.println(url.getPath().substring(1).replace("%20", " "));
(3)FileReader fileReader = new FileReader(url.getPath());

ランタイム

表示: スレッド「main」で例外が発生しました java.io.FileNotFoundException: D:\Eclipse%20WorkSpace\(java300)ScriptManager\bin\a.js (指定されたパスが見つかりません)

url.getPath() をローカルファイルディレクトリの「D:/Eclipse WorkSpace/(java300)ScriptManager/bin/a.js」に変更すると、ファイルを正常に読み取ることができます。

url.getPath() の値は次のとおりです: D:\Eclipse%20WorkSpace\(java300)ScriptManager\bin\a.js ただし、読み込みファイルが見つかりません

問題は「%20」です。Eclipse WorkSpace の間にスペースがあり、システムが自動的にそれを %20 に置き換えてしまい、操作中にエラーが発生します。

url.getPath() で処理を行い、url.getPath().substring(1).replace("%20", " ") で %20 を " " スペースに置き換えると、問題は解決します。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • js でファイル コントロールの完全なパスを取得するにはどうすればよいでしょうか?
  • JavaScript と fileReader を組み合わせて画像をアップロードする
  • Javascript ファイルと Blob の詳細な説明
  • js 画像アップロードにおけるファイル、bolb、base64 画像間の変換

<<:  CSS 画面サイズ適応実装例

>>:  Linux システムで crontab を使用して MySQL データベースを定期的にバックアップする方法

推薦する

Centos6.5 で MySQL 5.7.19 をインストールして設定する方法

Centos6.5にmysql5.7.19をインストールするための詳細な手順は次のとおりです。 1....

js 学習ノート: class、super、extends キーワード

目次序文1. es6の前にオブジェクトを作成する2. es6 後のクラス宣言3. クラスの継承4. ...

MySQLユーザー権限管理の詳細な説明

目次序文: 1. ユーザー権利の概要2. 実際の権限管理序文:データベースのユーザー権限管理について...

入力できない無効な値はアクションレイヤーに渡すことができません

フォームを入力不可にしたい場合は、フォームを次のように設定します。コードをコピーコードは次のとおりで...

MySQL をインストールするときに初期パスワードを忘れた場合のシンプルで効果的な解決策

MySQL をインストールすると初期パスワードが与えられますが、この初期パスワードは大文字と小文字の...

docker コンペ応募でよく使われるコマンドのまとめ

アカウントにログイン DOCKER_REGISTRY=registry.cn-hangzhou.al...

jQuery ツリービュー ツリー構造アプリケーション

この記事では、jQueryツリービューツリー構造のアプリケーションコードを例として紹介します。具体的...

jQueryはフォントサイズ調整ケースを実装します

この記事では、フォントサイズを調整するためのjQueryの具体的なコードを参考までに紹介します。具体...

VUE ユニアプリの条件付きコーディングとページレイアウトに関する簡単な説明

目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...

JSメモリ空間の詳細な説明

目次概要1. スタックとヒープ2. 変数オブジェクトと基本データ型3. 参照データ型とヒープメモリメ...

MySql データ型チュートリアル例の詳細な説明

目次1. 概要2. MySQLデータ型の詳細な説明1) 文字列型2) 整数型3) 浮動小数点型4) ...

JavaScript の BigIn 関数の共通プロパティをまとめます

目次1. 概要2. 属性1. 数学演算子2. 比較演算子3. ブール演算結論1. 概要BigInt ...

Linux仮想マシンをWiFiに接続する方法

生活の中で、インターネットはどこにでもあります。インターネットを通じてゲームをしたり、テレビ番組を見...

mysql データ型変換の実装

1. 問題下図のような表があり、結果値がreference_high値より大きいデータを見つける必要...

React refの使用例

目次refとは何かrefの使い方DOM要素に配置するクラスコンポーネントに配置する関数コンポーネント...