当文件下载名称包含特殊/Unicode 字符作为文件名时,它将转换为 Id

本文关键字:文件名 Id 转换 字符 文件下载 包含特 Unicode | 更新日期: 2023-09-27 18:30:54

我正在尝试下载一个包含特殊/Unicode 字符的文件作为文件名 (ǟǾĂšĦ DeshďêŠħ (INQ0361).docx),我希望文件名保持不变,但它正在下载 id 如 1533.docx。

请参阅我正在使用的下面的代码

控制器:

 public FileResult Download(long id)
    {
        var document = UnitOfWork.Documents.GetById(id);
        return File(document.DocumentData, document.MimeType, document.Filename);
    }

视图:

 <tbody>
            @foreach(var item in Model.OrderByDescending(c=>c.UpdatedDate))
            {
                <tr>
                    <td>@Html.ActionLink(@item.FileName, "Download/" + item.DocumentId, new { Controller = "Document" }) </td>
                    <td>@item.FileSize.GetSizeString()</td>
                    <td>@String.Format("{0:dd/MM/yyyy}", item.UpdatedDate)</td>
                    <td>@item.UpdatedBy</td>
                    <td>@item.Note</td>
                </tr>
            }
        </tbody>

任何帮助将不胜感激。如果需要更多信息,请告诉我。

当文件下载名称包含特殊/Unicode 字符作为文件名时,它将转换为 Id

我找到了这个问题的解决方案,请在下面找到我的修复程序

 public FileResult Download(long id)
  { var document = UnitOfWork.Documents.GetById(id);
    string filename = document.Filename; 
    filename = Uri.EscapeDataString(filename); 
    return File(document.DocumentData, document.MimeType, filename);
  }