2013-06-18 3 views
6

я использую JQuery Ajax, чтобы загрузить файл, но нужно добавить некоторые параметры по методе WebAPI, здесь:WebAPI Аякс FormData загрузить с дополнительными параметрами

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 контроллер:

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

Без myParameter все работает, но когда я включаю myParameter в formdata и api-метод, я получаю 404, любой шанс заставить его работать?

+0

mate Вы можете разместить полный код, который работает для вас. Кажется, мне трудно найти лучшее решение. cheers –

ответ

13

Публикация объекта FormData приводит к запросу с типом контента multipart/form-data. Вы должны прочитать содержание запроса следующим образом:

[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; 
} 

Кстати, это будет сохранить файл по указанному пути, который C:\\SomeFolder и вы можете получить имя локального файла с помощью provider.FileData[0].LocalFileName;

пожалуйста, смотрите на MSDN code sample и Henrik's blog entry.

+1

Это выглядит многообещающим для моего сценария; но как клиент C# (не jQuery) вызывает этот метод? Мне нужно передать два строковых аргумента И XML-файл. –

+0

'Задача ' получение ошибки на этом этапе. любые идеи, как передать наблюдаемый массив и файл на контроллер. ура –

Смежные вопросы