如何在 ng-file-upload 中设置内容处置字符编码
How to set content disposition character encoding in ng-file-upload
我正在尝试上传名称中带有 em/en 破折号“–”字符(以 utf8 编码)的文件。字符在浏览器请求中正确呈现(查看 chrome 网络监视器)。但是没有编码信息随请求发送到服务器,然后服务器将字符解释为“â”(代码页 28591,iso-8859-1)。我开始明白使用
filename*=UTF-8''myFileWith–In.pdf
可能有效,但似乎无法以合适的方式操作文件名属性,例如不使用双引号。 Source
我的 angular 代码看起来像这样,是否可以从这里向内容配置添加编码信息?
function uploadFile(file, url)
{
$upload.upload({
url: url,
method: 'POST',
file: file,
});
}
在服务器上,我可以使用以下代码来更正编码,但它假设所有传入流量都以 utf8 编码,因此需要有一种方法来识别请求中的编码。
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] isoBytes = iso.GetBytes(file.FileName);
string msg = utf8.GetString(isoBytes);
您可以使用上传的文件名选项来设置内容处理的文件名。有关解释,请参阅自述文件参考。
function uploadFile(file, url)
{
$upload.upload({
url: url,
method: 'POST',
file: file,
fileName: 'UTF-8\'\'' + file.name
});
}
我正在尝试上传名称中带有 em/en 破折号“–”字符(以 utf8 编码)的文件。字符在浏览器请求中正确呈现(查看 chrome 网络监视器)。但是没有编码信息随请求发送到服务器,然后服务器将字符解释为“â”(代码页 28591,iso-8859-1)。我开始明白使用
filename*=UTF-8''myFileWith–In.pdf
可能有效,但似乎无法以合适的方式操作文件名属性,例如不使用双引号。 Source
我的 angular 代码看起来像这样,是否可以从这里向内容配置添加编码信息?
function uploadFile(file, url)
{
$upload.upload({
url: url,
method: 'POST',
file: file,
});
}
在服务器上,我可以使用以下代码来更正编码,但它假设所有传入流量都以 utf8 编码,因此需要有一种方法来识别请求中的编码。
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] isoBytes = iso.GetBytes(file.FileName);
string msg = utf8.GetString(isoBytes);
您可以使用上传的文件名选项来设置内容处理的文件名。有关解释,请参阅自述文件参考。
function uploadFile(file, url)
{
$upload.upload({
url: url,
method: 'POST',
file: file,
fileName: 'UTF-8\'\'' + file.name
});
}