3

我正在尝试使用带有 type="file" 的 html5 输入控件将文件上传到服务器。客户端javascript代码如下。

var fd = new FormData();
        fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
        var xhr = new XMLHttpRequest();
        xhr.upload.addEventListener("progress", uploadProgress, false);
        xhr.addEventListener("load", uploadComplete, false);
        xhr.addEventListener("error", uploadFailed, false);
        xhr.addEventListener("abort", uploadCanceled, false);

        xhr.open("POST", "Default.aspx", true);
        xhr.send(fd);

在此处

xhr.open("POST", "Default.aspx/Test", true);

如果我给出一个web 方法(“测试”),则控件没有命中服务器,就好像我删除了 web 方法并给出了普通的

xhr.open("POST", "Default.aspx", true);

控件正在点击 page_load 方法。

我错过了什么,所以网络方法没有受到打击。

问候, 拉克什

4

1 回答 1

0

我错过了什么,所以网络方法没有受到打击。

首先,您的 Default.aspx.cs 页面上必须有一个静态方法

public static void Test()

用 WebMethod 属性装饰。

using System.Web.services;

[WebMethod]
public static void Test()

通过这种方式,webmethod 被命中,但我不确定该方法应该具有什么样的参数,或者您是否可以使用HttpContext.Current.Request.Files访问发布的文件

你可以看看这个例子:

http://www.codeproject.com/Questions/374136/Call-Page-Method-From-Jquery-Ajax-Call

于 2013-09-12T13:02:08.723 回答