2013-02-07 25 views
3

我試圖使用示例代碼將圖像數據傳遞給Web API方法,我在這裏找到了http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2,我發現MultipartFormDataStreamProvider.FileData總是空的。爲什麼會這樣呢?另外,這是正確的方法嗎?有選擇嗎?我只想傳遞一張圖片。將圖像數據從Ajax發佈到WebAPI

呼叫

var t = new FormData(); 
t.append('file-', file.id); 
t.append('filename', file.name); 
t.append('Size', file.size); 

$.ajax({ 
    url: sf.getServiceRoot('mySite') + "upload/PostFormData", 
    type: "POST", 
    data: t, 
    contentType: false, 
    processData: false, 
    beforeSend: sf.setModuleHeaders 
}).done(function (response, status) { 
    alert(response); 
}).fail(function (xhr, result, status) { 
    alert("error: " + result); 
}); 

});

public async Task<HttpResponseMessage> PostFormData() 
    { 
     // Check if the request contains multipart/form-data. 
     if (!Request.Content.IsMimeMultipartContent()) 
     { 
      throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 
     } 

     string root = HttpContext.Current.Server.MapPath("~/App_Data"); 
     var provider = new MultipartFormDataStreamProvider(root); 

     try 
     { 
      // Read the form data. 
      await Request.Content.ReadAsMultipartAsync(provider); 

      // This illustrates how to get the file names. 
      foreach (MultipartFileData file in provider.FileData) 
      { 
       Trace.WriteLine(file.Headers.ContentDisposition.FileName); 
       Trace.WriteLine("Server file path: " + file.LocalFileName); 
      } 
      return Request.CreateResponse(HttpStatusCode.OK); 
     } 
     catch (System.Exception e) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); 
     } 
    } 

回答