2013-06-18 14 views
6

ekstra parametreleri ile yükleme, burada:WebAPI ajax formdata ben dosya yüklemek için jQuery ajax kullanarak ancak WebAPI yöntemine bazı parametreler eklemek istediğiniz ediyorum

var data = new FormData(); 
data.append("file", $("#file")[0].files[0]); 
data.append("myParameter", "test"); // with this param i get 404 

$.ajax({ 
    url: '/api/my/upload/', 
    data: data, 
    cache: false, 
    contentType: false, 
    processData: false, 
    type: 'POST', 
    success: function (data) { 
     console.log(data); 
    } 
}); 

WebAPI kontrolörü:

public class MyController : ApiController 
{ 
    public string Upload(string myParameter) 
    { 
     return System.Web.HttpContext.Current.Request.Files.Count.ToString() + "/" + myParameter; 
    } 
} 

MyParameter olmaksızın her şey çalışıyor ama myParameter'ı formdata ve api metoduna eklediğimde 404 elde edebiliyorum, bunu yapabilmem için bir şans var mı? İçerik türü çok parçalı/form-verileri ile bir istek FormData nesne sonuçları Gönderme

+0

mate, sizin için çalışan eksiksiz kodu gönderebilir. Daha iyi bir çözüm bulmak zor görünüyor. şerefe –

cevap

13

. BTW

[HttpPost] 
public async Task<string> Upload() 
{ 
    var provider = new MultipartFormDataStreamProvider("C:\\Somefolder"); 
    await Request.Content.ReadAsMultipartAsync(provider); 

    var myParameter = provider.FormData.GetValues("myParameter").FirstOrDefault(); 
    var count = provider.FileData.Count; 

    return count + "/" + myParameter; 
} 

, bu C:\\SomeFolder Belirtilen yolda dosyayı, kazandıracak ve siz provider.FileData[0].LocalFileName;

bir göz atın lütfen kullanarak yerel dosya adını alabilirsiniz: Çok gibi istek içeriğini okumak zorunda MSDN code sample ve Henrik's blog entry.

+1

Bu benim senaryo için umut verici görünüyor; ancak bir C# (jQuery değil) istemcisi bu yöntemi nasıl çağırır? İki string args VE bir XML dosyasını geçmem gerekiyor. –

+0

'Görev ' bu noktada hata alıyor. herhangi bir fikir gözlemlenebilir dizi ve dosya denetleyiciye nasıl geçilir. şerefe –