我正在尝试下载文件中某些文件包含非ASCII字符的文件,此时下载失败。它给出了以下错误。
无效的非ASCII或标头中的控制字符:0x000D
该代码与ASCII字符一起使用效果很好。我将响应标头中的文件名传递给以角度6开发的UI。
下面是我的代码
[HttpGet]
[Route("someroute/downloadfile")]
public IActionResult DownloadFile(int ID)
{
try
{
using (ExcelPackage pck = bal.DownloadFile(ID))
{
System.Net.Mime.ContentDisposition cd = new System.Net.Mime.ContentDisposition
{
FileName = pck.File.Name,
};
Response.Headers.Add("Content-Disposition", cd.ToString());
return File(pck.GetAsByteArray(), "application /vndopenxmlformats-officedocument.spreadsheetml.sheet");
}
}
catch (Exception ex)
{
throw ex;
}
}
但是,我的要求是我要按原样下载文件,尽管该文件包含非ASCII字符。
对此有任何帮助。
答案 0 :(得分:1)
您可以将非 ASCII 标头文本编码为 Base64,例如 Convert.ToBase64String(Encoding.UTF8.GetBytes(dirtyString)))
。
在 Angular 中,您可以使用 atob
取回非 ASCII 字符串。