2012-04-09 19 views
2

私は、ユーザーが自分のファイルをダウンロードするためのURLを投稿できるWebアプリケーションを持っています。私はlibcurlを使用しています。ファイルサイズ制限を適用するためにContent-Lengthというレスポンスをチェックしています。サーバーを持ち去ってしまった人の中には、引き続きアップロードが行われ、最終的には使用可能なスペースをすべて埋めることになり、サーバーが詰まることが心配です。サイズがContent-Lengthより大きい場合、libcurlはダウンロードファイルを中止しますか?ファイルサイズがContent-Lengthを超えた場合、libcurlはダウンロードを中断しますか?

+0

あなたは簡単なテストケースをまとめて試してみることができます... 100kを出力するスクリプトと50kしか期待しないダウンロードスクリプト。 –

+1

@MarcB大丈夫私はそれをし、それはContent-Lengthで止まった。ここまでは順調ですね。しかし、私は本当に権威ある答えに感謝します。ファイルサイズをチェックするソースへのリンクと同様です。何らかの他のヘッダーが存在する可能性があるため、何か(すべて)を変更することができます。 –

+0

@MarcB私は、ファイルサイズよりも小さいContent-Lengthヘッダを設定したので、ストリーミングを止めたのは私のテストサーバ(Webrick)だったかもしれません。そして、libcurlは受信を停止しませんでした。どのように私は知るべきですか? –

答えて

2

はい、(ほとんど)そうです。 Content-Lengthフィールド(使用される場合)は、この特定のレスポンスの本文のサイズを示すためにHTTPがどのように使用されるかです。接続は開いたままにしておき、次の要求に再利用されるため、HTTPクライアントはこれ以上読み取ることができません。

これは基本的なHTTP 1.1の機能であり、詳細はRFC7230にあります。また、カールコードを読みたい場合は、Content-Lengthヘッダーのマッチングと解析のためのlib/http.cソースコードを確認してください。 lib/transfer.cなどで 'maxdownload'フィールドが使用されています。

関連する問題