JavaScript を使用してファイルをアップロードし、その進行状況を追跡する方法

Linda Hamilton
リリース: 2024-11-10 04:38:02
オリジナル
962 人が閲覧しました

How to Upload Files with JavaScript and Track Their Progress?

JavaScript を使用したファイルのアップロード

input 要素で選択したファイルをアップロードするには、FormData オブジェクトを使用できます。方法は次のとおりです:

1. FormData オブジェクトを作成します:

let formData = new FormData();
ログイン後にコピー

2.ファイルを FormData に追加します:

let photo = document.getElementById("image-file").files[0];
formData.append("photo", photo);
ログイン後にコピー

3.データをサーバーに送信します:

フェッチ API を使用すると、FormData を指定された URL に送信できます:

fetch('/upload/image', {method: "POST", body: formData});
ログイン後にコピー

アップロードの進行状況をリッスン

アップロードの進行状況を監視するには、EventTarget の addEventListener() を使用できます。メソッド:

let progressBar = document.getElementById("progress-bar");

formData.addEventListener("progress", (event) => {
    if (event.lengthComputable) {
        let percentComplete = Math.round((event.loaded / event.total) * 100);
        progressBar.style.width = percentComplete + "%";
    }
});
ログイン後にコピー

完全なコード例

ファイルのアップロードと進行状況の追跡を 1 つの例に結合します:

let formData = new FormData();
let photo = document.getElementById("image-file").files[0];
formData.append("photo", photo);

let progressBar = document.getElementById("progress-bar");

fetch('/upload/image', {method: "POST", body: formData})
.then((response) => {
    console.log(response);  // Handle server response
})
.catch((error) => {
    console.error(error);  // Handle upload failure
});

formData.addEventListener("progress", (event) => {
    if (event.lengthComputable) {
        let percentComplete = Math.round((event.loaded / event.total) * 100);
        progressBar.style.width = percentComplete + "%";
    }
});
ログイン後にコピー

このコードは、 「/upload/image」URL への POST リクエストを作成し、ファイル データを送信し、進行状況を使用してアップロードの進行状況を表示します。バー。

以上がJavaScript を使用してファイルをアップロードし、その進行状況を追跡する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート