2016-04-02 19 views
2

her zaman null:İçerik Eğilimi çok basit bir form var, web API 2

<form id="upload" enctype="multipart/form-data" action="~/Api/File/Post" method="post" > 
    <input type="file" name="files[0].media" /> 
    <input type="submit" value="Submit" /> 
</form> 

Ben dosyayı almak ayıklama ama dosya adını erişemez böylece fileData.Headers.ContentDisposition her zaman sıfırdır. Dosya adını almak için Request nesnesinde başka bir özellik görmüyorum. Bana kromlar debugger ile en teftiş ediyor isteği karıştırır Ne

aşağıdaki ayrıntıları

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary3rLRRBQX6jj7MbWU 
------WebKitFormBoundary3rLRRBQX6jj7MbWU 
Content-Disposition: form-data; name="files[0].media"; filename="MyFileName.mp4" 
Content-Type: video/mp4 


------WebKitFormBoundary3rLRRBQX6jj7MbWU-- 

Herhangi bir fikir gösterir? Bu (yukarıdaki örnekte kaldırıldı dosya adı) ... doğru gönderiliyor benziyor aşağıdaki kodu kullanarak dosya verilere erişmek mümkün olmalıdır Sorunuza verilen html biçim verildiğinde

cevap

4

:

[HttpPost] 
public async Task<IHttpActionResult> Post() 
{ 
    if (!Request.Content.IsMimeMultipartContent()) 
    { 
     return this.StatusCode(HttpStatusCode.UnsupportedMediaType); 
    } 

    var filesProvider = await Request.Content.ReadAsMultipartAsync(); 
    var fileContents = filesProvider.Contents.FirstOrDefault(); 
    if (fileContents == null) 
    { 
     return this.BadRequest("Missing file"); 
    } 

    var headers = fileContents.Headers; 
    string filename = headers.ContentDisposition.FileName; 
    Stream fileStream = await fileContents.ReadAsStreamAsync(); 

    ... do something with the file name and stream 
} 
+0

Çözüm Request.Content.ReadAsMultipartAsync bekliyor = var filesProvider sonra her dosya için bunu yapmak oldu (!) Teşekkürler – user2330270

+0

Mükemmel çalışıyor, teşekkürler! Web Api 2.2, Visual Studio 2015 ve IIS 10 – Raffaeu

İlgili konular