1. ホーム
  2. javascript

[解決済み] fetchの進捗状況をアップロードしますか?

2022-06-26 08:28:06

質問

アップロードの進捗を示すインジケータを実装するための文書や例を見つけるのに苦労しています。 フェッチ .

今のところ見つけた唯一の参考文献です と述べています。

プログレスイベントは高レベルの機能で、今のところフェッチには到来しません。自分で作成するには Content-Length ヘッダを調べ、パススルーストリームを使用して受信したバイトを監視することで、独自のイベントを作成できます。

これはつまり、レスポンスに対して明示的に Content-Length が異なることを意味します。そしてもちろん、たとえ Content-Length があったとしても、それは嘘である可能性があります。ストリームでは、これらの嘘を好きなように処理することができます。

送信されたバイトを監視するパススルースリームをどのように書けばよいですか?もしそれが何らかの違いを生むのであれば、私はこれを、ブラウザから Cloudinary .

ノート : 私は ではない に興味がある。 Cloudinary JS ライブラリ は、jQuery に依存し、私のアプリはそうではないので、興味があります。私は、ネイティブのJavaScriptでこれを行うために必要なストリーム処理と、Githubの fetch ポリフィルを使用してこれを行うために必要なストリーム処理にのみ興味があります。


https://fetch.spec.whatwg.org/#fetch-api

どのように解決するのですか?

ストリームがウェブプラットフォームに着地し始めた( https://jakearchibald.com/2016/streams-ftw/ ) が、まだ初期段階です。

まもなく、リクエストのボディとしてストリームを提供できるようになりますが、未解決の問題は、そのストリームの消費がアップロードされたバイトに関連するかどうかということです。

特定のリダイレクトは、データが新しい場所に再送信される結果となりますが、ストリームは "restart"することができません。ボディを複数回呼び出すことができるコールバックに変更することでこれを修正できますが、リダイレクトの数を公開することは、JS が検出できるプラットフォーム上で初めてのことなので、セキュリティ リークでないことを確認する必要があります。

ストリームの消費をアップロードされたバイトにリンクすることに意味があるのかどうか、疑問に思っている人もいます。

手短に言うと、これはまだ可能ではありませんが、将来的には、ストリームか、またはより高いレベルのコールバックが fetch() .