そのため、私は現在 HTTP ファイルのアップロードを研究しています (を使用しHttpWebRequest
ていくつかのファイルを外部 API にアップロードするというコンテキストで)、通常、数十個のダッシュが境界として使用されています。ブラウザは通常、ランダムに選択された 16 進数をダッシュに追加するようです。
控えめに言っても、これは恐ろしく不格好に思えます (あえてプロトコルの欠陥と言えますか?)。私の特定のユースケースには、私が使用する境界を非常によく含む可能性のあるデータが含まれているため (何を選択しても、データは一種のダンプです)、アップロードするファイルが問題を起こさないことを 100% 確認する必要があります。実際の衝突の可能性が 10 億分の 1 であったとしても、数値をランダムに選択することは私にはまったく受け入れられません。ターゲット スクリプトが何らかのエラーを検出した場合に、ランダムに選択された別の境界で再試行することも、私は好きではありません。
これを回避する唯一の方法は、選択した境界が存在しないかどうかを確認するために、ファイル全体 (多くの場合、数メガバイト) をスキャンすることですか? アップロードでさまざまなリクエストを実行する必要があるため、I/O ペナルティを回避するために、ファイル全体のスキャンを回避したいと考えています。
または、境界が形式にすぎないようにするために渡すことができるサイズパラメータのようなものはありますか?
私は何が欠けていますか?リモート API を変更することはできないため、Base64 でエンコードしたり、ある種のエスケープ文字を追加したりすることはできません。