2

現在、カスタムデスクトップアプリケーションからアップロードモジュール( http://www.grid.net.ru/nginx/upload.en.html )を使用してnginxサーバー上のWebサービスにアップロードし、送信する単純なマルチパートフォームPOSTを実行していますファイルの一部と、ファイルのメタデータを含む base64 でエンコードされた XML が別の部分に含まれています。

サーバーはこの POST を受信し、メタデータを読み取り、ファイルを処理する Web サービスに渡します。

私が今やりたいことは、アップロード モジュールの upload_resumable ディレクティブを使用して POST をいくつかのチャンクで実行し、切断の可能性を最小限に抑えて再開できるようにすることです。私は現在、ここで説明されているプロトコルに従ってこれを行うことができます: http://www.grid.net.ru/nginx/resumable_uploads.en.html

ファイルのバイト範囲をいくつかのヘッダーとともに送信して、いくつかの投稿でチャンクとセッションを識別し、すべての部分がアップロードされると、nginx はファイル名とパスを含む最終的な POST を作成し、それを upload_pass の場所に渡します (私の場合、djangoアプリへのCGI)。

ただし、プロトコルは POST の本文がバイト範囲で示されるバイトでなければならないことを示しているため、このメソッドを使用してマルチパート投稿を送信する方法については明確ではありません。上記で書いた XML も含めるために、最後の投稿が必要です。

XML を本文の最初のバイトとそれに属するバイト数を示すヘッダーとして送信することを考えることができますが、それはそのヘッダーを削除するために最終ファイルを余分に処理することを意味し、最終ファイルは潜在的に GB サイズの範囲になります。 .

他のアイデアはありますか?

4

1 に答える 1

2

nginx でサポートされているプロトコルでは、投稿がマルチパートであってはならないと具体的に述べられているため、ファイルを本文に送信し、残りのパラメーターを URL にエンコードして送信することになりました。最もきれいな URL ではありませんが、機能します。

于 2011-06-16T20:45:07.123 に答える