ホームページ バックエンド開発 PHPチュートリアル HTML5ファイルのアップロード例

HTML5ファイルのアップロード例

Aug 08, 2016 am 09:19 AM
console file files quot

元のアドレス:

http://www.webcodegeeks.com/html5/html5-file-upload-example/

この記事では、HTML5 を使用してユーザーが選択したファイル情報を読み取り、ファイルをアップロードする方法を説明します。

FileApi は HTML5 の最も興味深い新機能の 1 つで、表示されているファイルに関する情報をサーバーにアップロードする前に読み取ることができ、投稿フォームを使用せずにファイルを送信できます。

以下では、Ajaxを使用して、ユーザーが選択したファイル情報を読み取り、それらのファイルを非同期にアップロードする方法を示します。


1. ファイル情報を表示する

1.1:のみの場合1 つのファイル

HTML コードは次のとおりです

<input type="file" id="fileinput" />
ログイン後にコピー
ユーザーがファイルを選択すると、input 要素は「change」イベントを生成するため、このイベントをリッスンできます:

document.getElementById('fileinput').addEventListener('change', function(){
    var file = this.files[0];
    // This code is only for demo ...
    console.log("name : " + file.name);
    console.log("size : " + file.size);
    console.log("type : " + file.type);
    console.log("date : " + file.lastModified);
}, false);
ログイン後にコピー
ご覧のとおり、FileApi は非常に使いやすく、input 要素に「files」属性を追加します。

概要: 「files」属性は書き込み可能ではなく、その内容を読み取ることのみが可能です。これを使用して取得できることに気付きました。files[0] ユーザーが選択した最初のファイルです。


1.2: 複数のファイル

ここで、すべてのファイル情報を表示したいと思います。ユーザーによって選択されました。

HTML コードは次のとおりです

<input type="file" id="fileinput" multiple="multiple" />
ログイン後にコピー
「multiple」属性を input 要素に追加するだけで、ユーザーはアップロードする複数のファイルを選択できます。

document.getElementById('fileinput').addEventListener('change', function(){
    for(var i = 0; i<this.files.length; i++){
        var file =  this.files[i];
        // This code is only for demo ...
        console.group("File "+i);
        console.log("name : " + file.name);
        console.log("size : " + file.size);
        console.log("type : " + file.type);
        console.log("date : " + file.lastModified);
        console.groupEnd();
    }
}, false);
ログイン後にコピー
概要: 「accept」タグを追加して、ユーザーがアップロードできるファイルの種類をフィルタリングすることもできます。たとえば、ユーザーに画像のみをアップロードさせたい場合は、MIME タイプ「image/*」をフィルタリングするだけで済みます:

<input type="file" id="fileinput" multiple="multiple" accept="image/*" />
ログイン後にコピー
1.3 ファイルをプレビューする

ファイル情報を読み取ることも、ファイルのコンテンツを読み取ることもできます。たとえば、プレビュー画像を例として挙げます。

は次のとおりです:




    
    Preview images
    


Upload images ...

<input type="file" id="fileinput" multiple="multiple" accept="image/*" />
ログイン後にコピー
JavaScriptを使用してファイルのアップロードを管理します。

gallery.js

var uploadfiles = document.querySelector('#fileinput');
uploadfiles.addEventListener('change', function () {
    var files = this.files;
    for(var i=0; i<files.length; i++){
        previewImage(this.files[i]);
    }
}, false);
ログイン後にコピー
previewImage関数は、ユーザーが選択したファイルを表示します。

gallery.js

function previewImage(file) {
    var galleryId = "gallery";

    var gallery = document.getElementById(galleryId);
    var imageType = /image.*/;

    if (!file.type.match(imageType)) {
        throw "File Type must be an image";
    }

    var thumb = document.createElement("div");
    thumb.classList.add(&#39;thumbnail&#39;); // Add the class thumbnail to the created div

    var img = document.createElement("img");
    img.file = file;
    thumb.appendChild(img);
    gallery.appendChild(thumb);

    // 使用FileReader来显示图片内容
    var reader = new FileReader();
    reader.onload = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img);
    reader.readAsDataURL(file);
}
ログイン後にコピー
ファイルの内容を非同期で読み取る FileReader オブジェクトを導入しました。新しい FileReader を使用してオブジェクトをインスタンス化し、readAsUrl メソッドを呼び出してファイルのデータを読み取ります。 ファイル コンテンツが読み取られた後、

onload メソッドがイベントのように呼び出され、ファイル コンテンツが画像要素の src 属性に割り当てられます: aImg.src = e.target.result;


2. ファイルをアップロードします


ファイルをアップロードするには XMLHttpRequest (Ajax) を使用します。

ユーザーが選択したすべてのファイルは HTTP リクエストを作成し、サーバーに送信します。

最初に定義しますXMLHttpRequest を含むメソッド ファイルをアップロードするには

function uploadFile(file){
    var url = &#39;server/index.php&#39;;
    var xhr = new XMLHttpRequest();
    var fd = new FormData();
    xhr.open("POST", url, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            // Every thing ok, file uploaded
            console.log(xhr.responseText); // handle response.
        }
    };
    fd.append("upload_file", file);
    xhr.send(fd);
}
ログイン後にコピー

このメソッドは、指定された URL に (post メソッド経由で) ajax リクエストを生成し、「upload_file」リクエスト パラメーターでファイルのコンテンツを送信します。 $_FILES[ を渡すことができます。 'upload_file'] このパラメータを取得するには、

次に、uploadFile メソッドを使用して、選択したファイルをアップロードします。

<input type="file" id="uploadfiles" multiple="multiple" />
ログイン後にコピー
Js は次のとおりです:

var uploadfiles = document.querySelector('#uploadfiles');
uploadfiles.addEventListener('change', function () {
    var files = this.files;
    for(var i=0; i<files.length; i++){
        uploadFile(this.files[i]); //上传文件
    }
}, false);
ログイン後にコピー
PHP スクリプトは次のとおりです:

if (isset($_FILES['upload_file'])) {
    if(move_uploaded_file($_FILES['upload_file']['tmp_name'], "datas/" . $_FILES['upload_file']['name'])){
        echo $_FILES['upload_file']['name']. " OK";
    } else {
        echo $_FILES['upload_file']['name']. " KO";
    }
    exit;
} else {
    echo "No files uploaded ...";
}
ログイン後にコピー
3. ダウンロード

すべてのソースコード

上記では、関連する内容も含めて HTML5 ファイルのアップロード例を紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

JavaのFile.length()関数を使用してファイルのサイズを取得します。 JavaのFile.length()関数を使用してファイルのサイズを取得します。 Jul 24, 2023 am 08:36 AM

ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

新しいNintendo Switch Liteのリフレッシュの予約注文が開始されました 新しいNintendo Switch Liteのリフレッシュの予約注文が開始されました Jun 29, 2024 am 06:49 AM

任天堂は、最新バージョンのSwitch Lite(Amazonで現在189.99ドル)の予約注文を開始した。ただし、このデバイスはまだ世界中で注文できません。要約すると、同社はほぼ 2 週間前に Switch Lite Hyrule Edition を発表しました。

紅夢ネイティブアプリケーションのランダムな詩 紅夢ネイティブアプリケーションのランダムな詩 Feb 19, 2024 pm 01:36 PM

オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

コンソールってどういう意味ですか? コンソールってどういう意味ですか? Sep 05, 2023 pm 02:43 PM

コンソールとは、コンソールを意味します。コンピュータ システムと対話するデバイスまたはソフトウェアです。通常は、情報を入力および出力するためのキーボードと画面を備えたデバイスです。コンソールは、もともと大型コンピュータ システムに使用され、後に個人用にも適用されました。ユーザーがコンピュータ システムを管理および保守したり、オペレーティング システムやアプリケーションをインストールしたり、プログラムをデバッグしたりするのに役立ちます。

PHP BLOBをファイルに変換する方法 PHP BLOBをファイルに変換する方法 Mar 16, 2023 am 10:47 AM

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

C# の Console.Clear 関数を使用してコンソール出力をクリアする C# の Console.Clear 関数を使用してコンソール出力をクリアする Nov 18, 2023 am 11:00 AM

C# で Console.Clear 関数を使用して、コンソール出力をクリアします。C# コンソール アプリケーションでは、新しいコンテンツを表示したり、より良いユーザー エクスペリエンスを提供したりするために、コンソールの出力情報をクリアする必要があることがよくあります。 C# には、この関数を実装するための Console.Clear 関数が用意されています。これにより、コンソールの出力をクリアしてインターフェイスを再び空白にすることができます。 Console.Clear 関数の呼び出し形式は次​​のとおりです: Console.Clear(); この関数は入力を必要としません。

JavaのFile.renameTo()関数を使用してファイルの名前を変更する JavaのFile.renameTo()関数を使用してファイルの名前を変更する Jul 25, 2023 pm 03:45 PM

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

任天堂、Switch 2発売前に新たなSwitch Liteのリフレッシュを発表 任天堂、Switch 2発売前に新たなSwitch Liteのリフレッシュを発表 Jun 20, 2024 am 09:41 AM

任天堂は昨日、最新の Nintendo Direct イベントで多くのゲームを発表しましたが、その概要については別途ご案内しました。さらに、同社は Switch Lite の新バージョン (Amazon で現在 194.93 ドル) も発表しました。

See all articles