如何使用ajax从客户端发送文件到服务器端而不使用处理程序?

时间:2016-05-02 06:09:57

标签: javascript c# jquery ajax

我已经使用ajax将文件发送到处理程序页面。但是现在我正在尝试使用ajax.i将文件发送到webmethod,但是无法获取文件。我已经在下面放了我的示例代码,请给我任何想法。
这是我的javacript代码

 <input type="file" id="MsoBill"   class="MsoReqdit upload">

    var Frmdata = new FormData();
    var Files = $("#MsoBill").get(0).files;
    Frmdata.append("test", Files[0])


  $.ajax({
        type: "POST",
        url: 'MyForm.aspx/testAjax',
        data: '{test:' + Frmdata + '}',
       contentType: "application/json; charset=utf-8",
       dataType: "json",
        processData:false,
        success: function (res) { debugger; alert(res); },
        failure: function (result) {
            alert("fail");
        }
    });

我的服务器端代码

[WebMethod]
public static int testAjax(Object test)
{

        return 1;
}

1 个答案:

答案 0 :(得分:0)

您应该将测试对象接收(或投射)到HttpPostedFileBase,然后执行

 MemoryStream target = new MemoryStream();
 test.InputStream.CopyTo(target);
 byte[] data = target.ToArray(); //here are the bytes

然后只需保存文件或执行您需要的操作:

System.IO.File.WriteAllBytes("path",bytes);

test.SaveAs("path");

根据需要