2012-03-15 17 views

答えて

6

私は私のRESTサービスからファイルをダウンロードするために使用するサンプル方法:

[WebGet(UriTemplate = "file/{id}")] 
     public Stream GetPdfFile(string id) 
     { 
      WebOperationContext.Current.OutgoingResponse.ContentType = "application/txt"; 
      FileStream f = new FileStream("C:\\Test.txt", FileMode.Open); 
      int length = (int)f.Length; 
      WebOperationContext.Current.OutgoingResponse.ContentLength = length; 
      byte[] buffer = new byte[length]; 
      int sum = 0; 
      int count; 
      while((count = f.Read(buffer, sum , length - sum)) > 0) 
      { 
       sum += count; 
      } 
      f.Close(); 
      return new MemoryStream(buffer); 
     } 
+0

どうもありがとう!私はこれで作業します。 – fiberOptics

+11

FileStreamを直接返さない理由は何ですか?実際にストリームをコピーしたい場合、.Net4にはストリーム上のCopyToメソッドがあります。 –

+1

おそらく関連性はありませんが、FileStreamを直接返すと、クローズされていないファイルに問題が発生する可能性があります。 – steavy

関連する問題