Tengo una solicitud ajax que envía un archivo junto con otra información. Todo excepto el archivo tiene el valor correcto y el archivo siempre es nulo. No puedo entender por qué.
Aquí está la entrada que he incluido en el formulario:
<input type="file" id="file" runat="server"/>
Al hacer clic en el botón, llama a esta función:
function ButtonClick() { var file = document.getElementById('file').files[0]; // correctly gets the file var formData = new FormData(); formData.append('key1', 'val1'); formData.append('key2', 'val2'); formData.append('file', file, file.name); $.ajax({ cache: false, data: formData, dataType: 'json', processData: false, contentType: false, success: function (data, textStatus, jqXHR) { closeWindow(); }, timeout: 30000, type: 'POST', url: '<%= ResolveClientUrl("~/api/Example/ExampleUrl") %>' }); }Cuando recibo la solicitud del lado del servidor, obtengo los siguientes valores:
var key1= HttpContext.Current.Request.Form["key1"]); // returns "val1" var key2= HttpContext.Current.Request.Form["key2"]); // returns "val2" var file= HttpContext.Current.Request.Form["file"]); // returns "null" Y cuando miro HttpContext.Current.Request.Form , "archivo" no está en la solicitud en absoluto.
El archivo debe ser accesible a través de
HttpContext.Current.Request.Files["file"]