2011-12-05 11 views
4

は表示されません。 firefoxはファイルサイズ-1とクロムを示しています。つまり、ファイルサイズはまったく表示されません。ファイルサイズを表示するにはどうしたらいいですか?は、私は関数内のコードのこの部分を持っているファイルサイズ

+2

:あなたはあなたのコードは次のようになりますファイルをストリーミングしている場合

response.Content.Headers.ContentLength = <length in bytes>; 

を追加のヘッダー 'Content-Length:xxxx'が必要です(ここで 'xxxx'はファイルのサイズです) – Teneff

答えて

6

あなたはこれを与えてみました:

Response.AddHeader("Content-Length", someBytes.Length.ToString()); 

コンテンツ長が設定されている場合は、ダウンロードしながら、Webブラウザはプログレスバーが表示されます。これは中規模および大規模ファイルの非常に重要なユーザビリティ機能であり、本当に必要です。あなたは、あなたがどのくらい離れているかを知りたいので、ダウンロードをキャンセルしてからやり直したり、サイトを放棄したりしないでください。 Refer

+0

回答ありがとうございますが、Response.Outputに出力をストリームします。 Response.Outputのサイズを取得する方法はありますか? – NomenNescio

+0

'Response.OutputStream.Length'を使用しましたか?私はこれを試していないが、これが助けてくれたら教えてください? – FosterZ

+0

これは別の問題ですので、別の質問を作成しました: http://stackoverflow.com/questions/8385689/get-response-output-size – NomenNescio

1

あなたの応答がタイプSystem.Net.Http.HttpResponseMessageである場合は、使用して、Content-Lengthヘッダを挿入することができます。

FileStream fileStream = File.Open("<source file name>", FileMode.Open); 
HttpResponseMessage response = new HttpResponseMessage(); 
response.StatusCode = HttpStatusCode.OK; 
response.Content = new StreamContent(fileStream); 
response.Content.Headers.ContentLength = fileStream.Length; 
response.Content.Headers.ContentType = 
    new MediaTypeHeaderValue("<media type e.g. application/zip>"); 
response.Content.Headers.ContentDisposition = 
    new ContentDispositionHeaderValue("file") 
    { 
     FileName = "<destination file name>" 
    }; 
return response; 
関連する問題