C# 将文件上载到ASPX服务器端页面

C# 将文件上载到ASPX服务器端页面,c#,asp.net,C#,Asp.net,我无法理解如何将上载文件的内容发送到我的ASPX服务器端。这适用于HTML-4实现,其中客户端上不提供文件API,并且使用.NET v4.0 以下是我目前掌握的情况: FileReceiver.aspx上的HTML: <input type="button" id="uploadFile" value="Upload" /> <div class="hidden"> <form id="uploadFileForm"> <inp

我无法理解如何将上载文件的内容发送到我的ASPX服务器端。这适用于HTML-4实现,其中客户端上不提供文件API,并且使用.NET v4.0

以下是我目前掌握的情况:

FileReceiver.aspx上的HTML:

<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
}
请帮我填写这两个???在上面的代码中。提前谢谢

这应该行得通

$("#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 
        } 
    });
});

非常感谢您的快速回复。让我试试这个,然后再打给你!:没问题,我最近不得不自己解决同样的问题。IE不支持FormData:你知道,这可以解释我最近在IE上遇到的一个问题!好的,现在我承诺了。我也想要一个解决方案!不过,我确实发现了一个黑客——概述了你的确切答案,并解释了在IE中应该做什么。我会检查一下,让你知道。同时你也可以试试!
[WebMethod]
public static string ReceiveFile(HttpPostedFileBase receivedFile) 
{
    // do something and return status
}