如何在HttpClient/MultipartFormDataContent中禁用base64编码的文件名 [英] How to disable base64-encoded filenames in HttpClient/MultipartFormDataContent
问题描述
我正在使用HttpClient
将MultipartFormDataContent
POST到Java Web应用程序.我正在上传几个StringContents
和一个文件,并使用HttpClient.PostAsync(String, HttpContent)
方法使用MultipartFormDataContent.Add(HttpContent content, String name, String fileName)
将其添加为StreamContent
.
I'm using HttpClient
to POST MultipartFormDataContent
to a Java web application. I'm uploading several StringContents
and one file which I add as a StreamContent
using MultipartFormDataContent.Add(HttpContent content, String name, String fileName)
using the method HttpClient.PostAsync(String, HttpContent)
.
这很好用,除非当我提供包含德语变音符号的 fileName 时(我尚未测试其他非ASCII字符).在这种情况下, fileName 已被base64编码.名为 99 2 LD 353 TempÄüöß-1.txt
This works fine, except when I provide a fileName that contains german umlauts (I haven't tested other non-ASCII characters yet). In this case, fileName is being base64-encoded. The result for a file named 99 2 LD 353 Temp Äüöß-1.txt
看起来像这样:
__utf-8_B_VGVtcCDvv73vv73vv73vv71cOTkgMiBMRCAzNTMgVGVtcCDvv73vv73vv73vv70tMS50eHQ___
Java服务器在其UI中显示此编码文件名,这会使用户感到困惑.我无法进行任何服务器端更改.
The Java server shows this encoded file name in its UI, which confuses the users. I cannot make any server-side changes.
如何禁用此行为?任何帮助将不胜感激.
How do I disable this behavior? Any help would be highly appreciated.
提前谢谢!
推荐答案
我终于放弃了,并使用HttpWebRequest
而不是HttpClient
解决了任务.我必须手动构建标题和内容,但这使我可以忽略发送非ASCII文件名的标准.我最终将未编码的UTF-8文件名塞入filename
标头中,这是服务器接受我的请求的唯一方法.
I finally gave up and solved the task using HttpWebRequest
instead of HttpClient
. I had to build headers and content manually, but this allowed me to ignore the standards for sending non-ASCII filenames. I ended up cramming unencoded UTF-8 filenames into the filename
header, which was the only way the server would accept my request.
这篇关于如何在HttpClient/MultipartFormDataContent中禁用base64编码的文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!