1

添付ファイル付きのEMLファイルがいくつかあります。添付ファイルを取り出したEMLファイルを解析しました。これを行うと:

File.WriteAllBytes(attachment.Name、Convert.FromBase64String(attachment.Data))

添付ファイルをファイルにダンプします。私がやりたいのは、ユーザーがそれをクリックしたときに添付ファイルがダウンロードされるようにリンクを作成することです。

ファイルがすでにディスク上にある場合は簡単ですが、代わりに、バイト配列に変換できるこのbase64エンコード文字列があります。このbase64エンコードされた文字列(または変換されたバイト配列)を取得して、それに直接リンクを生成するにはどうすればよいですか?

ありがとう

4

3 に答える 3

2

FileResult他のアクションメソッドからのデータを含むクラスを返します。

 public ActionResult DownloadData(string fileNameOrWhatever)
 {
      byte[] fileData = ...;

      return File(fileData, "someMimeType", "downloadNameToBeDisplayed");
 }

あなたのリンクはここを指します:

<a href="/DownloadData/Something">Click me!</a>
于 2012-04-24T18:41:11.973 に答える
0

サーバー上にExcelドキュメントを作成するプロジェクトがあり、ユーザーが特定のアクションに移動すると、ダウンロードとしてファイルを受け取ります。これが私が使用しているコードです、そしてあなたはあなたが必要とするもののためにそれをリファクタリングできると思います:

    public void GetExcel(string id)
    {
        ExcelPackage p = new ExcelPackage(); 

        //code to add data to the document            

        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;  filename=BitlyReport.xlsx");
        MemoryStream stream = new MemoryStream(p.GetAsByteArray());
        Response.OutputStream.Write(stream.ToArray(), 0, stream.ToArray().Length);

        Response.Flush();

        Response.Close();
    }
于 2012-04-24T18:44:55.390 に答える
0

これはMVCですか?を返すコントローラーメソッドをFileStreamResult作成し、それにリンクするアクションを作成して、にデータを書き込むことができます。

于 2012-04-24T18:41:44.620 に答える