目次
FileList オブジェクトとファイル オブジェクト
Blob オブジェクト
作成方法
ファイルをダウンロード
FileReader オブジェクト
アップロード画像プレビュー
データのバックアップとリカバリ
Base64 エンコード
ホームページ ウェブフロントエンド H5 チュートリアル H5 でのファイルアップロードの詳細な紹介

H5 でのファイルアップロードの詳細な紹介

Jul 17, 2017 am 11:06 AM
h5 html5

FileList オブジェクトとファイル オブジェクト

HTML の input[type="file"] タグには、ユーザーが複数のファイルを選択できるようにする multiple 属性があります。FileList オブジェクトは、ユーザーが選択したファイルのリストを表します。このリスト内の各ファイルはファイル オブジェクトです。

ファイルオブジェクトの属性:

  • name: パスを除くファイル名。

  • type : ファイルの種類。画像タイプのファイルはすべて image/ で始まり、アップロードを画像のみに制限するために使用できます。

  • size : ファイルサイズ。ファイル サイズに基づいて追加の操作を実行できます。

  • lastModified: ファイルが最後に変更された時刻。

<input type="file" id="files" multiple><script>var elem = document.getElementById(&#39;files&#39;);elem.onchange = function (event) {var files = event.target.files;for (var i = 0; i < files.length; i++) {// 文件类型为 image 并且文件大小小于 200kbif(files[i].type.indexOf(&#39;image/&#39;) !== -1 && files[i].size < 204800){console.log(files[i].name);}}}</script>
ログイン後にコピー

input には accept 属性があり、ファイルのアップロードを通じて送信できるファイルの種類を指定するために使用できます。

accept="image/*" を使用すると、アップロードを画像形式のみに制限できます。ただし、Webkit ブラウザでは応答が遅いという問題があり、ファイル選択ボックスが表示されるまでに数秒かかりました。

解決策は、* ワイルドカード文字を指定された MIME タイプに変更することです。

<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png">
ログイン後にコピー

Blob オブジェクト

Blob オブジェクトはコンテナーに相当し、バイナリ データを格納するために使用できます。これには 2 つの属性があり、size 属性はバイト長を表し、type 属性は MIME タイプを表します。

作成方法

Blob オブジェクトは、Blob() コンストラクターを使用して作成できます。

var blob = new Blob([&#39;hello&#39;], {type:"text/plain"});
ログイン後にコピー

Blob コンストラクターの最初のパラメーターは配列であり、ArrayBuffer オブジェクト、ArrayBufferView オブジェクト、Blob オブジェクト、および文字列を格納できます。

Blob オブジェクトは、slice() メソッドを通じて新しい Blob オブジェクトを返すことができます。

var newblob = blob.slice(0,5, {type:"text/plain"});
ログイン後にコピー

slice() メソッドは 3 つのパラメーターを使用しますが、それらはすべてオプションです。最初のパラメータはコピーされる Blob オブジェクト内のバイナリ データの開始位置を表し、2 番目のパラメータはコピーの終了位置を表し、3 番目のパラメータは Blob オブジェクトの MIME タイプです。

canvas.toBlob() は Blob オブジェクトを作成することもできます。 toBlob() は 3 つのパラメータを使用します。1 つ目はコールバック関数、2 つ目は画像タイプ、デフォルトは image/png、3 つ目は画質で、値は 0 から 1 の間です。

var canvas = document.getElementById(&#39;canvas&#39;);canvas.toBlob(function(blob){ console.log(blob); }, "image/jpeg", 0.5);
ログイン後にコピー

ファイルをダウンロード

Blod オブジェクトは、window.URL オブジェクトを通じてネットワーク アドレスを生成し、それを a タグの download 属性と組み合わせてファイルのダウンロード機能を実装できます。

たとえば、キャンバスを画像ファイルとしてダウンロードします。

var canvas = document.getElementById(&#39;canvas&#39;);canvas.toBlob(function(blob){
// 使用 createObjectURL 生成地址,格式为 blob:null/fd95b806-db11-4f98-b2ce-5eb16b38ba36var url = URL.createObjectURL(blob);var a = document.createElement(&#39;a&#39;);a.download = &#39;canvas&#39;;a.href = url;
// 模拟a标签点击进行下载a.click();
// 下载后告诉浏览器不再需要保持这个文件的引用了URL.revokeObjectURL(url);});
ログイン後にコピー

同様の方法で文字列をテキストファイルとして保存することもできます。

FileReader オブジェクト

FileReader オブジェクトは、主にファイルをメモリに読み込み、ファイル内のデータを読み取るために使用されます。コンストラクターを通じて FileReader オブジェクトを作成します

var reader = new FileReader();
ログイン後にコピー

このオブジェクトには次のメソッドがあります:

  • abort: 読み取り操作を中断します。

  • readAsArrayBuffer: ファイルの内容を ArrayBuffer オブジェクトに読み取ります。

  • readAsBinaryString: ファイルをバイナリ データとして読み取ります。

  • readAsDataURL: ファイルを data: URL 形式の文字列として読み取ります。

  • readAsText: ファイルをテキストとして読み取ります。

アップロード画像プレビュー

一般的なアプリケーションは、クライアントが画像をアップロードした後、readAsDataURL() を通じて画像を表示することです。

<input type="file" id="files" accept="image/jpeg,image/jpg,image/png"><img src="blank.gif" id="preview"><script>var elem = document.getElementById(&#39;files&#39;),img = document.getElementById(&#39;preview&#39;);elem.onchange = function () {var files = elem.files,reader = new FileReader();if(files && files[0]){reader.onload = function (ev) {img.src = ev.target.result;}reader.readAsDataURL(files[0]);}}</script>
ログイン後にコピー

ただし、Samsung や iPhone を含む一部の携帯電話で縦方向に写真を撮影すると、写真をアップロードする際にバグが発生し、写真が上下逆になってしまいます。 。 。ソリューションについてはここでは説明しませんので、興味のある方はご覧ください: モバイル画像アップロードの回転と圧縮のソリューション

データのバックアップとリカバリ

FileReader オブジェクトの readAsText() は、関数と組み合わせてファイルのテキストを読み取ることができます。 Blob オブジェクトのファイルをダウンロードして、データ エクスポート ファイルをローカルにバックアップできます。データを復元する必要がある場合は、入力を通じてバックアップ ファイルをアップロードし、readAsText() を使用してテキストを読み取り、データを復元します。 。

コードには上記と同様の機能があるため、ここでは繰り返しません。特定のアプリケーションについては、notepad を参照してください。

Base64 エンコード

Base64 エンコードをサポートするために、atob メソッドと btoa メソッドが HTML5 に追加されています。それらの名前も非常に単純で、b to a および a to b で、エンコードとデコードを表します。

var a = "lin-xin.github.io";var b = btoa(a);var c = atob(b);console.log(a);     
// https://lin-xin.github.ioconsole.log(b);     
// aHR0cHM6Ly9saW4teGluLmdpdGh1Yi5pbw==console.log(c);     
// https://lin-xin.github.io
ログイン後にコピー

btoa メソッドは、 a の値を変更せずに文字列 a をエンコードし、エンコードされた値を返します。
atob メソッドはエンコードされた文字列をデコードします。

しかし、パラメーターに 8 ビット ASCII エンコードの文字範囲を超える中国語の文字が含まれているため、ブラウザーはエラーを報告します。したがって、中国語を最初に encodeURIComponent でエンコードする必要があります。

りー

以上がH5 でのファイルアップロードの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles