c# - 将标题中的希伯来文文件名作为内容配置发送到 AngularJS 客户端
问题描述
我需要将文件名(希伯来语)发送到 AngularJS 中的客户端。在我的 web api 方法中,我使用以下代码发送内容处置标头:
Response.Clear();
Response.Buffer = true;
Response.Charset = "UTF-8";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
//simplified - actually sending a variable with filename
Response.AddHeader("Content-Disposition", "attachment;filename=דיזינגוף.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
如何在我的客户端应用程序中发送/读取 UTF-8 文件名?
解决方案
希望它会帮助其他人:
我们需要对包含 utf 字符的文件名进行编码。您可以在添加响应标头之前执行此操作:
//filename - 2100871-2_החל_25042019.xlsx
var file = HttpUtility.UrlEncode(filename, Encoding.UTF8);
Response.AddHeader("Content-Disposition", "attachment;filename=" + file + ".xlsx");
然后在客户端,我们需要使用解码它
var filename;
var disposition = headers['content-disposition'];
if (disposition && disposition.indexOf('attachment') !== -1) {
var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
var matches = filenameRegex.exec(disposition);
if (matches != null && matches[1]) {
filename = matches[1];
}
}
filename = decodeURIComponent(filename); //decode here
推荐阅读
- linux - 如何在shell脚本中的csv文件的开头添加新行
- linux - EOF 中的 bash 脚本无法将参数传递给函数
- html - CSS Grid问题:底部元素在顶部元素上方结束
- python - 如何在joblib的缓存中显式设置返回值?
- android-ndk - 关于在Android.bp中使用预建的第三个库的问题
- python - OperationalError at / no such column: core_book.average_rating
- reactjs - 如何使用 react 和 webpack 创建可配置的构建?
- sql - 将 SQL 查询转换为动态 SQL
- linux - 我们如何才能看到所有正在运行的服务 Linux 机器?
- google-apps-script - 从自定义公式调用时,相同的 Apps 脚本代码提供不同的输出