1

特定のファイル名のファイルを返す FileResult に問題があります。データベースでは、ファイル名は ID + 拡張子 (例: 456789.mp3) です。

このコード片

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
return File(fs, "application/octet-stream", "myfile.mp3");

Webkit ブラウザー (Chrome、Safari) を除くすべてのブラウザーで適切に動作します。Chrome と Safari はファイルを元のファイル名 (456789.mp3) として受け取ります。ヘッダーを追加すると

Response.AppendHeader("Content-Disposition", "attachment;filename=myfile.mp3");

Safari はファイルを myfile.mp3attach (拡張子に「attach」が追加されていることに注意してください) として受け取りますが、Chrome はこのファイルを myfile.mp3,attach (拡張子に「,attach」を追加します) として受け取ります。

この種の問題を経験した人はいますか?

ありがとう

4

2 に答える 2

7

それは私を助けました:

        var encoding = System.Text.Encoding.UTF8;
        Response.Charset = encoding.WebName;
        Response.HeaderEncoding = encoding;

            Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", (Request.Browser.Browser == "IE") ? HttpUtility.UrlEncode(fileName, encoding) : fileName));

        return File(fs, contentType, fileName);
于 2011-01-25T07:19:07.977 に答える
0

パッティング

         Response.Clear();
         Response.ClearHeaders();

         Response.Charset = encoding.WebName; 

私のためにこれを解決しました

于 2015-11-09T04:39:19.870 に答える