検索
ホームページウェブフロントエンドjsチュートリアルJavaScript ファイル API ファイルのアップロードプレビュー_javascript スキル

ブラウザベースのアプリケーションの場合、ローカル ファイルにアクセスするのは厄介な問題で、通常は タグを使用することしかできません。 。実装プロセスは次のとおりです。ファイルを選択すると、ユーザーが指定したファイルの名前が value 属性に保存され、フォームが送信されると、ブラウザーはファイル名だけでなく、選択したファイルの内容をサーバーに送信します。次に、サーバーから返されたアドレスを取得してプレビューします。

しかし、ある日、写真をアップロードする必要があり、写真をアップロードした後にプレビューし、別の写真を変更したい場合は、まずサーバーにアップロードしてからプレビューする必要があります。ネットワークが比較的遅い場合、これは非常に面倒です。

そのため、サーバーにアップロードする前にプレビューする必要がある場合があります。特に、新浪微博でのアバターの置き換えなどのカット機能を備えたものではそうです。ただし、現時点ではプラグイン開発かフラッシュを使用するしかありません。ブラウザごとに技術的な実装が異なるため、複数のブラウザをサポートするにはプログラムが非常に複雑になり、困難になります。維持する。幸いなことに、現在では File API が存在します。

変更イベントをリッスンすることで、ユーザーが選択したファイルを知ることができ、ファイル オブジェクトを含むファイル コレクションを追加できます。各ファイル オブジェクトはファイルに対応します。そして、すべてに次の読み取り専用属性 name、size、type、lastModifiedDate があります。

を例として、onchange を監視し、そのファイル オブジェクトを出力します。

ここから、ユーザーが選択したファイル形式、ファイル名、ファイルサイズなどに関する情報を知ることができます。したがって、選択したドキュメントが要件の一部を満たしているかどうかを確認するのは簡単です。

さらに、File API は、ファイル内のデータを読み取るための FileReader タイプも提供します。

FileReader タイプは、XMLHttpRequest と同様の非同期ファイル読み取りメカニズムを実装しますが、リモート サーバーではなくファイル システムを読み取ります。いくつかの読み取り方法を提供します:

  • readAsText(file,encoding): ファイルをプレーン テキスト形式で読み取り、読み取ったテキストを result 属性に保存します。2 番目のパラメーターは、エンコード タイプを指定するために使用されます (オプション)。
  • readAsDataURL(file): 読み込んだファイルはデータ URL の形式で result 属性に保存されます。
  • readAsBinaryString(file): ファイルを読み取り、文字列を result 属性に保存します。
  • readAsArrayBuffer(file): ファイルを読み取り、結果属性
  • にファイルの内容を含む ArrayBuffer を保存します。

上記のメソッドで同じローカル画像を読み取り、次のように比較のために result 属性に保存された情報を出力します。

readAsText(ファイル,エンコーディング):

readAsDataURL(ファイル):

上記の比較を通じて、これらのファイル読み取り方法は、ファイル データの柔軟な処理に非常に便利であることがわかりました。例えば、画像ファイルを読み込み、データURLとして保存することで、アップロード前のプレビュー機能として利用できます。

読み取りプロセスは非同期であるため、FileReader にはさまざまな状況を処理するためのいくつかのイベントがあります: progress (新しいデータが読み取られたかどうか)、erro (エラーが発生したかどうか)、load (ファイル全体が読み取られたかどうか)書類)。

さまざまな理由でファイルを読み取れなかった場合、エラーイベントが発生します。エラーイベントが発生すると、FileReader の error 属性のオブジェクトに属性コード (エラーコード) が保存されます。

アップロード プレビューに FileReader を使用する例:

HTML:

<label class="item_label">上传照片:
 <span style="width: 100px; height: 100px;border:1px solid #ccc; display:inline-block"><img  src="/static/imghwm/default1.png"  data-src="#"  class="lazy" id="uploadPreview"   style="max-width:90%" alt="JavaScript ファイル API ファイルのアップロードプレビュー_javascript スキル" ></span>
 <input type="file" name="file" id="postFile" style="width:74px;">
 <span id="error_text" style="display: none;">提示</span>
</label>
  

JavaScript:

document.getElementById('postFile').onchange = function() {
 var val = this.value;
 var upLoadType = '.jpg,.gif,.bmp,.png';//['.jpg','.gif','.bmp','.png']; //可上传的格式
 var fileExt = val.substr(val.lastIndexOf(".")).toLowerCase(); //从字符串中抽出最后一次出现.之后的字符,并且转换成小写
 var result = upLoadType.indexOf(fileExt); //查找后缀名是否符合条件,如果符合返回>=0,如果不符合则返回负数;
 _alertMsg = $('#error_text');
 var oFReader = new FileReader();
 if (this.files.length === 0) { return; }
 var oFile = this.files[0]; //如果只有一个文件则只需要访问这个FileList对象中的第一个元素.
  
 if (oFile.size / 1024 < 100) {
  _alertMsg.html("<font style='color:blue'>√</font>").show()
 };
 if (result < 0) {
  _alertMsg.html("请输入正确格式:" + upLoadType).show();
 } else{
  _alertMsg.html("<font style='color:blue'>√</font>").show();
 };
 
 oFReader.readAsDataURL(oFile); // 开始在后台进行读取操作。当图像文件的所有内容加载后,他们转换成一个data:URL,传递到onload回调函数中
 oFReader.onload = function (oFREvent) { //当读取操作成功完成时调用.
  document.getElementById("uploadPreview").src = oFREvent.target.result;
 };
};

効果と返される画像の URL:

以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

クォーツでタスクが開始される前に通知を送信する方法は?クォーツでタスクが開始される前に通知を送信する方法は?Apr 04, 2025 pm 09:24 PM

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?Apr 04, 2025 pm 09:21 PM

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?Apr 04, 2025 pm 09:18 PM

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい