フロントエンドで画像をアップロードする原理は、入力 type="file" タグを使用して画像を取得し、FileReader オブジェクトを使用して新しいインスタンスを作成し、このオブジェクトの readAsDataURL() メソッドを介してファイル タグによって取得された画像を読み取り、base64 形式に変換し、完了後に ajax またはその他の方法を介してバックグラウンドに転送することです。 html input type="file" タグが必要です。プレビューが必要な場合は、img タグを追加できます。 <div class="warp"> <div class="warp-content">クリックしてアップロード</div> <input type="ファイル" id="ファイル" /> </div> <画像ソース="" /> JS 1. 画像のアップロードでは、アップロードした画像が変更されたかどうかを検出する必要があるため、ここでは js の onchange イベントを選択します。まず、input,img の dom 要素を取得します。input type='file' のデモ要素の下には、アップロードしたファイル情報を含む files 属性があります。これを印刷すると、アップロードしたファイルの名前、タイプ、その他の情報を確認できます。 var ファイル = document.getElementById('ファイル'); var image = document.querySelector("img"); ファイル.onchange = 関数() { var fileData = this.files[0]; //これはアップロードしたファイルです} 2. 次に、FileReader オブジェクトを使用します。FileReader は主にファイルの内容をメモリに読み込むために使用されます。一連の非同期インターフェイスを通じて、メイン スレッドでローカル ファイルにアクセスできます。 FileReader オブジェクトを使用すると、Web アプリケーションはユーザーのコンピューターに保存されているファイル (または生データ バッファー) の内容を非同期的に読み取り、File オブジェクトまたは Blob オブジェクトを使用して処理するファイルまたはデータを指定できます。ここでは、base64 形式でファイルを読み取ることができる readAsDataURL メソッドが使用されています。 使い方 var リーダー = 新しい FileReader(); reader.readAsDataURL(fileData);//ファイルの内容を非同期に読み取り、結果は data:url の文字列形式で表されます/*読み取り操作が正常に完了したときに呼び出されます*/ reader.onload = 関数(e) { console.log(e); // オブジェクトのプロパティを確認します。 result プロパティがあります。 プロパティ値は、base64 形式の長い文字列です。 これが必要な画像です。 console.log(this.result); // データを取得します。 ここで、this は FileReader() オブジェクトのインスタンス リーダーを指します。 image.setAttribute("src", this.result)//img タグに値を割り当てて表示します} FileReader オブジェクトのプロパティとイベント FileReader オブジェクトの公式ドキュメント 3. 2 番目のステップを完了すると、写真をアップロードできます。ユーザーが再度使用する場合、アップロードしたものが写真かビデオかは保証できません。アップロードされたファイルの種類を特定する必要があります。input type='file' のデモ要素の下に、ファイルの種類情報を含む files 属性があります。この属性を使用して、アップロードされたファイルの種類を特定できます。 (reader.onload では、this.result を通じて画像の base64 形式を取得し、それを変数に割り当ててバックエンドに渡すことで、画像のアップロードを完了できます) var ファイル = document.getElementById('ファイル'); var image = document.querySelector("img"); ファイル.onchange = 関数() { var fileData = this.files[0]; //FileListオブジェクトの最初のファイル(Fileオブジェクト)を取得します。これはアップロードしたファイルです。var pettern = /^image/; console.info(ファイルデータタイプ) if (!pettern.test(fileData.type)) { alert("画像の形式が正しくありません"); 戻る; } var リーダー = 新しい FileReader(); reader.readAsDataURL(fileData);//ファイルの内容を非同期に読み取り、結果は data:url の文字列形式で表されます/*読み取り操作が正常に完了したときに呼び出されます*/ reader.onload = 関数(e) { console.log(e); //オブジェクトを表示 console.log(this.result); //必要なデータ image.setAttribute("src", this.result) } } 完全なコード: <!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <タイトル></タイトル> <スタイル タイプ="text/css"> .warp { 表示: インラインブロック; 垂直方向の位置合わせ: 下; 位置: 相対的; } .warpコンテンツ{ 境界線: 1px 実線の赤; 幅: 150ピクセル; 高さ: 150px; 行の高さ: 150px; テキスト配置: 中央; } 入力{ 位置: 絶対; 上: 0; 左: 0; 境界線: 1px 実線の赤; 幅: 150ピクセル; 高さ: 150px; 不透明度: 0; カーソル: ポインタ; } 画像 { 幅: 300ピクセル; 高さ: 300px; 境界線: 1px 実線の赤; 上マージン: 50px; 垂直方向の位置合わせ: 下; } </スタイル> </head> <本文> <div class="fileBox"> <div class="warp"> <div class="warp-content">クリックしてアップロード</div> <input type="ファイル" id="ファイル" /> </div> <画像ソース="" /> </div> <script type="text/javascript"> var ファイル = document.getElementById('ファイル'); var image = document.querySelector("img"); ファイル.onchange = 関数() { var fileData = this.files[0]; //FileListオブジェクトの最初のファイル(Fileオブジェクト)を取得します。これはアップロードしたファイルです。var pettern = /^image/; console.info(ファイルデータタイプ) if (!pettern.test(fileData.type)) { alert("画像の形式が正しくありません"); 戻る; } var リーダー = 新しい FileReader(); reader.readAsDataURL(fileData);//ファイルの内容を非同期に読み取り、結果は data:url の文字列形式で表されます/*読み取り操作が正常に完了したときに呼び出されます*/ reader.onload = 関数(e) { console.log(e); //オブジェクトを表示 console.log(this.result); //ここで必要なデータは、FileReader()オブジェクトのインスタンスリーダーを指します image.setAttribute("src", this.result) } } </スクリプト> </本文> </html> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL 8.0.24 リリースノートのいくつかの改善点
ご存知のとおり、binlog ログは MySQL データベースにとって非常に重要です。万が一、データ...
目次1. はじめに2. 本文2.1 フィールドの連結2.2 フィールドでの算術計算の実行1. はじめ...
Linux システムでは、ユーザーが手動で作成したさまざまなアカウントに加えて、システムまたはプログ...
目次序文フロントエンド構造バックエンド構造(ノード+エクスプレス) FormDataに基づくファイル...
序文データベースの応用において、プログラマーは継続的な実践を通じて多くの経験を積んできました。これら...
1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...
需要: この需要は緊急に必要です!地下鉄のシーンでは、脱出経路を示す矢印を描かなければなりません。こ...
JSON (JavaScript Object Notation、JS Object Notatio...
目次MySQL 切り捨ての使用1. 構文を切り捨てる2. Truncateの使用上の注意3. TRU...
データ移行は、MySQL から ClickHouse にインポートする必要があります。概要プランは以...
コンテナが起動した後まず管理者にログインして新しいユーザーを作成してください $ docker ex...
MySQLでは判定記号がよく使われますが、等しくない記号はもっと一般的に使われます。次の3つの等しく...
1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...
序文以前、ローディングスタイルのコンポーネントを作成しました。コードの再利用性を実現するために、この...
データを整理するためのリストWeb ページの表示を制御する多数の HTML タグを学習した後、読者は...