如何在不使用处理程序的情况下使用 ajax 从客户端将文件发送到服务器端?

Posted

技术标签:

【中文标题】如何在不使用处理程序的情况下使用 ajax 从客户端将文件发送到服务器端?【英文标题】:How to send file to server side from client side using ajax without using handler? 【发布时间】:2016-08-26 20:02:33 【问题描述】:

我已经使用 ajax 将文件发送到处理程序页面。但是现在我正在尝试使用 ajax 将文件发送到 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】:

你应该接收(或转换)测试对象到一个 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");

根据需要

【讨论】:

以上是关于如何在不使用处理程序的情况下使用 ajax 从客户端将文件发送到服务器端?的主要内容,如果未能解决你的问题,请参考以下文章

gomain函数中如何动态获取数据

如何使用 Django、Ajax、jQuery 在不刷新页面的情况下提交表单?

如何在不使用请求的情况下直接从代码调用烧瓶端点

如何在程序启动后在不打开控制台的情况下从批处理文件运行程序?

如何在不刷新的情况下使用 Ajax 在 ASP.NET MVC 中保存表单数据

如何在不使用json的情况下解决ajax函数中的CORS问题