我在用着HttpClient
发布MultipartFormDataContent
到 Java Web 应用程序。我上传几个StringContents
和一个我添加为StreamContent
using MultipartFormDataContent.Add(HttpContent content, String name, String fileName)
使用该方法HttpClient.PostAsync(String, HttpContent)
.
这工作正常,除非我提供fileName包含德语变音符号(我还没有测试其他非 ASCII 字符)。在这种情况下,fileName正在进行 base64 编码。名为的文件的结果99 2 LD 353 温度 äüöß-1.txt
看起来像这样:
__utf-8_B_VGVtcCDvv73vv73vv73vv71cOTkgMiBMRCAzNTMgVGVtcCDvv73vv73vv73vv70tMS50eHQ___
Java 服务器在其 UI 中显示此编码的文件名,这使用户感到困惑。我无法进行任何服务器端更改。
如何禁用此行为?任何帮助将不胜感激。
提前致谢!
我刚刚发现与 StrezzOr 相同的限制,因为我使用的服务器不遵守文件名* 标准。
我将文件名转换为 UTF-8 表示的字节数组,并将字节重新设置为“简单”字符串(非 UTF-8)的字符。
此代码创建一个内容流并将其添加到多部分内容中:
FileStream fs = File.OpenRead(_fullPath);
StreamContent streamContent = new StreamContent(fs);
streamContent.Headers.Add("Content-Type", "application/octet-stream");
String headerValue = "form-data; name=\"Filedata\"; filename=\"" + _Filename + "\"";
byte[] bytes = Encoding.UTF8.GetBytes(headerValue);
headerValue="";
foreach (byte b in bytes)
{
headerValue += (Char)b;
}
streamContent.Headers.Add("Content-Disposition", headerValue);
multipart.Add(streamContent, "Filedata", _Filename);
这适用于西班牙口音。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)