C# 带有可选上载文件的HttpClient post表单
我有一个网络表单,有几个上传照片的选项(最多10个)<代码>内容类型设置为“多部分/表单数据”。我只知道如何上传一个文件,但不知道如何为其他9个可选文件创建C# 带有可选上载文件的HttpClient post表单,c#,asp.net,.net,httpclient,dotnet-httpclient,C#,Asp.net,.net,Httpclient,Dotnet Httpclient,我有一个网络表单,有几个上传照片的选项(最多10个)内容类型设置为“多部分/表单数据”。我只知道如何上传一个文件,但不知道如何为其他9个可选文件创建HttpContent?使用适当的ContentDisposition标题创建MultipartContent,没有带来好运。我最多只能得到: Content-Disposition: form-data; name="bla bla bla"; 我需要发送带有空内容的post请求,以获得如下可选上传文件: Content-Disposition:
HttpContent
?使用适当的ContentDisposition
标题创建MultipartContent
,没有带来好运。我最多只能得到:Content-Disposition: form-data; name="bla bla bla"; 我需要发送带有空内容的post请求,以获得如下可选上传文件:
Content-Disposition: form-data; name="bla bla bla"; filename="" 内容配置:表单数据;name=“bla bla bla”;filename=“”
任何想法都值得赞赏。好的,我不知道这是否是解决我问题的最佳方案,但至少它是有效的:
1.为HttpContent创建新类(来自
HttpContent
的子类)。2.初始化
内容配置
标题。3.重写两个方法
trycomputellength
(返回false)和SerializeToStreamAsync
(只是序列化任务的存根)
现在可以将此类添加到MultipartFormDataContent
http请求内容如下所示:
----------[boundary string]
Content-Disposition: form-data; name="formFieldName"; filename=""
----------[boundary string]
----------[边界字符串]
内容处理:表单数据;name=“formFieldName”;filename=“”
-->-[boundary string]将Wireshark或Fiddler与浏览器一起使用,查看正确的HTTP内容的外观,然后在代码中重新生成……我知道正确的请求的外观。问题是如何在ContentDisposition中添加参数“filename”。空值或null值引发异常“无效参数”…我是指参数“filename”的值为空。我不明白您的确切意思。。。抱歉。只有在我实际添加了一些有效负载(如StreamContent)时,参数“filename”才会出现在内容处置标题中。在这种情况下,我有一个正确的内容处置标题。我想知道如何在没有实际负载的情况下创建一些HttpContent,但使用如下内容处置头:表单数据;name=“contentName”;filename=”“? ----------[boundary string]
Content-Disposition: form-data; name="formFieldName"; filename=""
----------[boundary string]