2017-01-01 8 views
0

をダウンロードするためのリンクを作成します結果。コントローラー機能はすべて使用可能です。C#が、私は今、このシナリオを持っているXLSまたはCSVファイルを作成し、ファイル

ここでは、ウェブサイトにアクセスするローカルコンピュータに結果をダウンロードしたいと考えています。私は結果を何に入れるべきかまだ分かりません。私はそれを探し、xlsファイルとcsvファイルの両方がかなりまっすぐに見える。しかし、ファイルを作成してサーバー側に保存するだけです。

だから私の質問は以下のとおりです。

  1. タスクは==>クライアントに一時ファイルをダウンロード==>サーバー上の一時ファイルを削除し、一時ファイルを作成することによって達成されなければならないのか?

  2. そうしなければならない場合、その一時ファイルをダウンロードするためのボタンを作成するにはどうすればよいですか?複数のユーザーに同時にサービスを提供している場合はどうなりますか?

今行うことと任意の助けをいただければ幸いかわかりません。

答えて

0

Sql Serverから受信したデータからMemoryStreamを作成する必要があります。以下のコードで新しいクラスを作成します。

public abstract class FileActionResult : IHttpActionResult 
    { 
     private string MediaType { get; } 
     private string FileName { get; } 
     private Stream Data { get; } 

     protected FileActionResult(Stream data, string fileName, string mediaType) 
     { 
      Data = data; 
      FileName = fileName; 
      MediaType = mediaType; 
     } 

     public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) 
     { 
      Data.Position = 0; 
      var response = new HttpResponseMessage 
      { 
       Content = new StreamContent(Data) 
      }; 
      response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
      response.Content.Headers.ContentType = new MediaTypeHeaderValue(MediaType); 
      response.Content.Headers.ContentDisposition.FileName = FileName; 
      response.Content.Headers.ContentLength = Data.Length; 

      return Task.FromResult(response); 
     } 

    } 

    public class ExcelFileActionResult : FileActionResult 
    { 
     public ExcelFileActionResult(Stream data) : base(data, "Exported.xls", "application/vnd.ms-excel") 
     { 
     } 
    } 

コントローラからのコーリングコード。

return new ExcelFileActionResult(stream); 

ストリームはmemorystreamです。

関連する問題