3

我想将 Html5 文件上传中的文件传递给ASMX webserviceusing jquery $.ajax. 我想知道我应该使用什么数据类型来反序列化 web 服务中上传的文件。

这是 HTML 代码:

<input type="file" name="fileToUpload"  id="fileToUpload" />
      <input type="button" onclick="uploadFile()" />

Javascript代码:

function uploadFile() {
    var ob=new Object();
    ob.name =document.getElementById('fileToUpload').files[0];
    var Result= JSON.stringify(ob);
    $.ajax(
    { url: "UploadWS.asmx/UploadedFile",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        type: "POST",
        data: "{'x':"+Result+"}",
        success: function() { },
        error: function() { alert('error'); }
    });
} 

网络服务代码:

public class ExtraInfo
    {
       //What data type write here?
    } 
[WebMethod]
    public void UploadedFile(object x) {
        JavaScriptSerializer Ser = new JavaScriptSerializer();
        ExtraInfo Ext = new ExtraInfo();
        Ext = Ser.Deserialize<ExtraInfo>(x.ToString());
    }
4

1 回答 1

6
function uploadFile() {
    var data = new FormData(),
        file = $("#fileToUpload")[0].files[0];

    data.append( "name", file.name );
    data.append( "size", file.size );
    data.append( "type", file.type );
    data.append( "file", file );

    $.ajax(
    { url: "UploadWS.asmx/UploadedFile",
        dataType: "json",
        type: "POST",
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        success: function() { },
        error: function() { alert('error'); }
    });
} 

这应该在您的服务器中显示为常规上传 POST 请求,其中"file"是上传文件的表单字段名称。我不知道如何用 ASP.NET 做到这一点。

于 2012-05-29T20:02:07.013 回答