3

さまざまな方法についてインターネット上で複数の投稿を見てきましたが、それでも適切な答えが見つかりませんでした.

問題: 私の CGI アプリケーションは組み込み Web サーバーで実行されており、使用している言語は C であり、フォームの POST 要求で送信されたファイルを処理しようとしています。

アプリケーションはこれまでライブラリを使用せずにすべてのことを行ってきましたが、今度はこの関数を追加する必要があり、どのライブラリを使用すればよいかわかりません。そして、そのような単純な目的のためにゼロからそれを行うことは、あまりにも複雑に思えます. 技術的な影響はそれほど大きくないかもしれませんが、特にブラウザ間の差異の可能性についてはそうです。

それについて何かアドバイスはありますか?

EDIT : ブラウザからファイルを POST できるようにしたいのですが、マルチパート コンテンツ タイプを避けたいのは、オーバーヘッドがかかるためです...

4

2 に答える 2

2

使用し<input type="file">てブラウザでファイルをアップロードするには、. これは交渉の余地がありません。ファイル入力は、デフォルトのフォーム エンコーディング ( ) では機能しません。enctype="multipart/form-data"application/x-www-form-urlencoded

可能であれば、 Perl のCGIモジュールのようなものを使用してアップロードを解析することを強くお勧めします。ただし、C に完全に行き詰まっている場合は、 https://github.com/iafonov/multipart-parser-cのようなものを試してみてください。

于 2013-07-24T17:33:44.637 に答える
0

これを行うサーバーを作成しました。この投稿リクエストから受け取るパケットは単なるデータです。POSTとしてフォーマットされます。つまり、次のような情報があります

HTTP: POST バージョンのようなもの データ: あなたのデータ

Data: または投稿リクエストを示すヘッダーが表示されるまでスキャンしてから、このデータをコピーします。それがあなたのファイル/引数/郵便で送信されたものになります。URLには含まれません(独自のヘッダーセクションがあります)

編集:投稿ヘッダーの例

 POST /path/script.cgi HTTP/1.0
 From: frog@jmarshall.com
 User-Agent: HTTPTool/1.0
 Content-Type: application/x-www-form-urlencoded
 Content-Length: 32

 home=Mosby&favorite+flavor=flies  -> This is your data (this happens to be arguments home and favoriteflavor
于 2013-07-23T15:53:59.907 に答える