ユーザーが大きなファイルをアップロードできるフォームを作成しています。モバイル デバイスや低速の接続では、アップロードに時間がかかる場合があるため、ユーザーに進行状況バー (またはまだ機能していることを知らせるもの) を表示する AJAX 呼び出しによってこれを処理することが重要であると思われます。
問題は次のとおりです。アップロードのエンドポイントは、パラメーターの 1 つとしてシークレット API キーを想定しているサード パーティの API です。これは、ドキュメントのセクションへの直接リンクです。この API キーは、クライアント側のユーザーに公開できません。
私の最初の本能は、API キーを持つサイト上の中間 PHP スクリプトにフォームを送信し、ファイルを API にアップロードすることです。しかし、これはファイルを 2 回アップロードすることを意味すると確信しています。1 回はサーバーにアップロードします。次に、サーバーから API エンドポイントに戻ります。フォームが AJAX で送信されたとしても、完了するまでに 2 倍の時間がかかるのは、ユーザーにとって良い結果ではありません。
では、API キーを安全に保ちながら、ユーザーがファイルをアップロードできるようにする最もスムーズな方法は何でしょうか?
重要かもしれないし重要でないかもしれないいくつかの詳細:
私たちのサイトは、CakePHP フレームワーク (v2.x) 上に構築された PHP Web アプリです。アップロードされるファイルは、長さが 1 ~ 5 分のさまざまな形式のビデオ ファイルです。API は Wistia という会社です (上記のドキュメントへのリンクを参照)。ファイル サイズは 3 ~ 30 MB の範囲のようです。サードパーティ API の動作を変更することはできません。