2014-12-14 2 views
1

У меня возникли проблемы с пониманием того, как отправить содержимое загруженного файла на сервер ASPX. Это для реализации HTML-4, где File API недоступен на стороне клиента и используется .NET v4.0.Загрузка файла на серверную страницу ASPX

Вот что я до сих пор:

HTML на FileReceiver.aspx:

<input type="button" id="uploadFile" value="Upload" /> 
<div class="hidden"> 
    <form id="uploadFileForm"> 
     <input type="file" id="browseForFiles" /> 
    </form> 
</div> 

(на стороне клиента) JS:

$("#uploadFile").click(function() { 
    $("#browseForFiles").click(); 
}); 

$("#browseForFiles").change(function() { 
    $("#uploadFileForm").submit(); 
}); 

$("#uploadFileForm").submit(function (e) { 

    // prevent default action 
    e.preventDefault(); 

    // send file to server 
    $.ajax({ 
     url: "FileReceiver.aspx/ReceiveFile", 
     type: "post", 
     dataType: "multipart/form-data", // <---- is this right? 
     data: ???, // <-------------------------- what goes here? 
     success: function(data) { 
      // do something on success 
     } 
    }); 
}); 

(на стороне сервера) FileReceiver.aspx .cs: ​​

[WebMethod] 
public static string ReceiveFile(??? receivedFile) // <-- what type goes here? 
{ 
    // do something and return status 
} 

Pl легко помочь заполнить два "???" в приведенных выше кодах. Заранее спасибо!

ответ

0

Это должно работать

$("#uploadFileForm").submit(function (e) { 

    // prevent default action 
    e.preventDefault(); 

    var formData = new FormData($('#uploadFileForm')[0]); 
    $.ajax({ 
     url: "FileReceiver.aspx/ReceiveFile", 
     type: "POST", 
     // Form data 
     data: formData, // <-- see above to see where this comes from 
     dataType: "json", // <-- the dataType you're RETURNING, not sending 
     cache: false, 
     //Options to tell jQuery not to process data or worry about content-type. 
     contentType: false, 
     processData: false, 
     success: function(data) { 
      // do something on success 
     } 
    }); 
}); 

Тогда ваш C# код должен выглядеть так

[WebMethod] 
public static string ReceiveFile(HttpPostedFileBase receivedFile) 
{ 
    // do something and return status 
} 
+0

Спасибо кучу для супер-быстрого реагирования. Позвольте мне попробовать это и вернуться к вам! :) – SNag

+0

Нет проблем, пришлось самому решить ту же проблему совсем недавно – roryok

+0

«FormData» не поддерживается в IE :( – SNag

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