簡體   English   中英

使用C#中的WebClient通過multipart-form-data上傳文件

[英]File upload via multipart-form-data using WebClient in C#

有人可以告訴我如何在multipart-form-data中上傳文件,這樣我就可以添加post-params和file作為內容。

如果您需要有效負載中的files和對象,則可以使用如下所示的multipart表單:

形成

<form id="createForm" method="post" enctype="multipart/form-data" action="http://localhost:5000/api/send">
<input type="text" name="Field1"  id="field1" />
<input type="text" name="Field2"  id="field2" />
<input type="file" id="bulk" name="Bulk" required />
</form>

POCO

class MyClass
{
  public string Field1{get;set;}
  public string Field2{get;set;}
}

調節器
在控制器中,您可以使用Request.Form.Files訪問文件,它會為您提供包含所有上傳文件的集合。然后您可以使用StreamReader讀取您的文件,如下所示:

[HttpPost]
[Route("api/send")]
[DisableRequestSizeLimit] 
public async Task<long> CreateAsync(MyClass obj) {
{
  var file=this.Request.Form.Files[0];  //there's only one in our form
  using(StreamReader reader=new StreamReader(file))
  {
    var data=await reader.ReadToEndAsync();
    Console.WriteLine("File Content:"+data);
    Console.WriteLine("{ Field1 :"+obj.Field1.ToString()+",Field2:"+obj.Field2.ToString()+"}");
  }

}

警告
處理multipart時要小心,因為您還需要指定段的maximum大小。
這是在Startup完成的:

public void ConfigureServices(IServiceCollection services) {
    services.Configure<FormOptions>(options => {
                    options.ValueCountLimit = 200;
                    options.ValueLengthLimit = int.MaxValue;
                    options.MultipartBodyLengthLimit = long.MaxValue;
                });
 }

或者我喜歡直接在Controller -s方法中使用[DisableRequestSizeLimit]屬性進行裝飾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM