2017-11-18 60 views
1

enter image description here如何在C#中讀取圖像和文本值?

正如你所看到的,我試圖通過POST命令發送的圖像和名稱到本地功能。

如何在C#中讀取這兩個參數?

這是我試過的,但它只能讀取文件圖像。

[FunctionName("Test")] 
public static async Task<HttpResponseMessage> 
    Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = 
null)]HttpRequestMessage req, TraceWriter log) 
{ 
    //Check if the request contains multipart/form-data. 
    if (!req.Content.IsMimeMultipartContent()) 
    { 
     return req.CreateResponse(HttpStatusCode.UnsupportedMediaType); 
    } 


    foreach (var stream in contents.Contents) 
    { 


     try 
     { 
      var fileBytes = await stream.ReadAsByteArrayAsync(); 
      var fileinfo = new FileInfo(stream.Headers.ContentDisposition.FileName.Trim('"')); 



     //Can Read File image like this. 


     } 
     catch(Exception e) 
     { 
      return req.CreateErrorResponse(HttpStatusCode.Conflict, e); 
     } 

回答

0

有沒有像使用內存流這樣做的解決方法?

根據您的要求,我認爲你可以使用HttpContentMultipartExtensions.ReadAsMultipartAsync,你會得到MultipartMemoryStreamProvider,那麼你可以利用下面的代碼讀取您上傳的文件:

var multipartMemoryStreamProvider= await req.Content.ReadAsMultipartAsync(); 
foreach (HttpContent content in multipartMemoryStreamProvider.Contents) 
{ 
    // for reading the uploaded file 
    var filename= content.Headers.ContentDisposition.FileName.Trim('"'); 
    var stream=await content.ReadAsStreamAsync();   

    //for formdata, you could check whether `content.Headers.ContentDisposition.FileName` is empty 
    log.Info($"name={content.Headers.ContentDisposition.Name},value={await content.ReadAsStringAsync()}"); 
} 

此外,你可以遵循這個issue關於基於MultipartMemoryStreamProvider創建您的自定義MultipartFormDataMemoryStreamProvider。並且這個issue關於建立基於MultipartStreamProvider的自定義InMemoryMultipartFormDataStreamProvider。

1

您可以使用MultipartFormDataStreamProvider

  1. 使用FileData屬性來獲取發佈的文件
  2. 使用FormData屬性來獲取基於鑰匙發佈任何形式的數據值。

檢查此File Upload and Multipart MIME

+0

我必須使用此方法將文件保存到App文件夾。有沒有像使用內存流一樣的解決方法? –