問題タブ [mimecraft]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
81569 参照

java - okhttp を使用してファイルをアップロードする方法

私は okhttp を httpclient として使用しています。良い API だと思いますが、ドキュメントはそれほど詳細ではありません。

ファイルのアップロードで http 投稿要求を行うためにそれを使用する方法は?

私の質問は:

  1. 部品名を設定するには?フォームでは、ファイルの名前は file1 にする必要があります。
  2. フォームに他のフィールドを追加する方法
0 投票する
3 に答える
1749 参照

android - flush() にもかかわらずデータをアップロードする前に、OkHttp は最大 800kb をバッファリングします。

画像のアップロードの進行状況を公開しようとしています。クライアントとして okhttp を使用してアップロードし、mimecraft を使用してマルチパート ファイルをパッケージ化します。

データがソケットに書き込まれたときにバイトカウントを書き込むログを追加し (正しく判断できる場合は 4kb のチャンクで)、アップロードしました。

問題は、データのチャンクが書き込まれるたびに出力ストリームでフラッシュを呼び出すと、出力ストリームに約 800kb が書き込まれるまで何もアップロードされないように見えることです。そのポイントに達すると、最大 100kb をアップロードするように見え、アプリはさらに 100kb を出力ストリームに書き込み (解放されたスペースのように、もう少し書き込める)、続行します。

この結果、(1.2MB のファイルで) 最初の 800KB がほぼ瞬時に書き込まれ/報告され、次にアップロードが開始され (Charles ネットワーク ソフトウェアを介して追跡されます)、次のファイルで 100KB の読み取り/書き込み/アップロードが開始されます。数秒後、最後のバイトが出力ストリームに書き込まれると、アプリはアップロードの 100% が書き込まれたことを報告します。ただし、ネットワーク クライアントはまだネットワーク バッファにある最後の 800kb をアップロード中であり、それをアップロードするためにさらに 5 ~ 10 秒間そこに留まり、その後リクエストを終了するため、これは当てはまります。

誰かがこの経験をしたことがありますか、またはこれがokhttpで一般的な問題であるかどうかを知っていますか?

乾杯

編集: 800kb 未満のファイルをアップロードする場合、250kb と 500kb をいくつかテストしましたが、それらはすべて、アップロードされる前にすぐにストリームに 100% 書き込まれますが、3 MB の画像でも 800 kb がアップロードされ、約 100 kb のチャンクに分割されます。 、書き込みループがそこにあり、アップロードされるたびに別の 100kb を書き込みます。