ストリームなしのフェッチのアップロード進行状況のポリフィル

バラツカ

FetchAPIが進行状況をサポートしていないという問題に遭遇しました。関連トピックを読みましたが、ReadableStreamsは適切な候補のようですが、依存関係ポリシーのために使用できません(まだ初期段階であり、多くのブラウザーでポリフィルする必要があります)。

そのため、最近利用可能なAPI、おそらくXHRに基づいて構築されたポリフィルが必要でした。私は私たちの実装を共有したいと思います。それほど複雑ではありませんが、他の人の時間を節約できるかもしれません。

バラツカ

これは、フェッチの署名に近づこうとしながら、XHRにフォールバックするソリューションです。これは進捗状況に焦点を当てていることに注意してください。応答ステータスと応答データは省略されています。

interface OnProgress {
    (loaded: number, total: number, done: boolean): void;
}

export function fetch(url: string, { method, headers, body }, onProgress: OnProgress): Promise {
    return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.open(method, url, true);
        xhr.upload.addEventListener('progress', e => onProgress(e.loaded, e.total, false));
        xhr.upload.addEventListener('loadend', _ => onProgress(undefined, undefined, true));
        xhr.onreadystatechange = () => {
            if (xhr.readyState === 4)
                resolve();
        };
        xhr.onerror = err => reject(err);
        Object.entries(headers).forEach(([name, value]) => xhr.setRequestHeader(name, value));
        xhr.send(body);
    });
}

使用例:

import { fetch } from 'my-fetch-progress';

const formData = new FormData();
formData.append('file', file, file.name);
const onProgress = (loaded, total, done) => console.log('onProgress', loaded, total, done);

fetch('/my-upload', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ...` },
    body: formData
}, onProgress)
    .then(_ => /*...*/);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PUTは、ストリームと進行状況を含むファイルのバイト範囲をアップロードします

分類Dev

マルチパート/ボディWebリクエストを使用した複数のファイルアップロードのアップロード進行状況の追跡

分類Dev

Yii2進行状況ウィジェットのクリック可能なフィールド

分類Dev

フェッチの進行状況インジケーターをアップロードしますか?

分類Dev

Delphiのチェックボックスリストと進行状況のあるファイルのコピー

分類Dev

マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

分類Dev

マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

分類Dev

Essenceフレームワークでファイルのアップロードの進行状況を表示する

分類Dev

アップロード画像の進行状況を表示マルチパート

分類Dev

ファイルの進行状況のアップロードと処理

分類Dev

Angularファクトリ:アップロード中の進行状況に応じてスコープを更新します

分類Dev

AFNetworking2.0トラックファイルのアップロードの進行状況

分類Dev

ファイルのアップロード:完了した進行状況バーの割合

分類Dev

プレーンなRubyスクリプトの進行状況をS3にアップロードします

分類Dev

Javaを使用したファイルのアップロード(進行状況バーあり)

分類Dev

更新パネルにファイルアップロードを使用して進行状況の更新を表示する

分類Dev

アプリをロードする前にWebアプリの進行状況インジケーターをフラッターしますか?

分類Dev

C#:HttpClient、MultipartFormDataContentとして複数のファイルをアップロードするときのファイルアップロードの進行状況

分類Dev

プログレスバーにファイルのアップロードの進行状況を表示する方法-AmazonS3バケット

分類Dev

SSH.NETを使用してProgressBarにファイルアップロードの進行状況を表示する

分類Dev

進行状況追跡C#を使用したファイルのアップロード

分類Dev

並列アップロードの進行状況のためにWindowsフォームで動的進行状況バーを生成する方法

分類Dev

マルチパートファイルの進行状況は、実際のアップロードよりも速く更新されます

分類Dev

OKHTTP3マルチパートアップロードの進行状況の追跡

分類Dev

Azureストレージへの非同期ファイルのアップロードの進行状況を追跡する方法

分類Dev

ファイルのアップロードの進行状況の最後にfancyboxを閉じます

分類Dev

angle2 +ファイルアップロードの進行状況インジケーター

分類Dev

Dropzone.jsの複数ファイルのアップロード、各ファイルのアップロードの進行状況を取得

分類Dev

MapStructのリポジトリからフェッチしてカスタムフィールドタイプにマップする方法

Related 関連記事

  1. 1

    PUTは、ストリームと進行状況を含むファイルのバイト範囲をアップロードします

  2. 2

    マルチパート/ボディWebリクエストを使用した複数のファイルアップロードのアップロード進行状況の追跡

  3. 3

    Yii2進行状況ウィジェットのクリック可能なフィールド

  4. 4

    フェッチの進行状況インジケーターをアップロードしますか?

  5. 5

    Delphiのチェックボックスリストと進行状況のあるファイルのコピー

  6. 6

    マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

  7. 7

    マルチパートなしでファイルアップロードの進行状況を取得するにはどうすればよいですか?

  8. 8

    Essenceフレームワークでファイルのアップロードの進行状況を表示する

  9. 9

    アップロード画像の進行状況を表示マルチパート

  10. 10

    ファイルの進行状況のアップロードと処理

  11. 11

    Angularファクトリ:アップロード中の進行状況に応じてスコープを更新します

  12. 12

    AFNetworking2.0トラックファイルのアップロードの進行状況

  13. 13

    ファイルのアップロード:完了した進行状況バーの割合

  14. 14

    プレーンなRubyスクリプトの進行状況をS3にアップロードします

  15. 15

    Javaを使用したファイルのアップロード(進行状況バーあり)

  16. 16

    更新パネルにファイルアップロードを使用して進行状況の更新を表示する

  17. 17

    アプリをロードする前にWebアプリの進行状況インジケーターをフラッターしますか?

  18. 18

    C#:HttpClient、MultipartFormDataContentとして複数のファイルをアップロードするときのファイルアップロードの進行状況

  19. 19

    プログレスバーにファイルのアップロードの進行状況を表示する方法-AmazonS3バケット

  20. 20

    SSH.NETを使用してProgressBarにファイルアップロードの進行状況を表示する

  21. 21

    進行状況追跡C#を使用したファイルのアップロード

  22. 22

    並列アップロードの進行状況のためにWindowsフォームで動的進行状況バーを生成する方法

  23. 23

    マルチパートファイルの進行状況は、実際のアップロードよりも速く更新されます

  24. 24

    OKHTTP3マルチパートアップロードの進行状況の追跡

  25. 25

    Azureストレージへの非同期ファイルのアップロードの進行状況を追跡する方法

  26. 26

    ファイルのアップロードの進行状況の最後にfancyboxを閉じます

  27. 27

    angle2 +ファイルアップロードの進行状況インジケーター

  28. 28

    Dropzone.jsの複数ファイルのアップロード、各ファイルのアップロードの進行状況を取得

  29. 29

    MapStructのリポジトリからフェッチしてカスタムフィールドタイプにマップする方法

ホットタグ

アーカイブ