既没有得到任何错误,也没有将html2canvas映像保存到服务器端

Neither getting any error nor html2canvas image is getting saved to server side

本文关键字:html2canvas 映像 服务器端 保存 错误 任何      更新时间:2023-09-26

我正在尝试将一个html2canvas映像保存到asp.net Web方法中的服务器端代码中。为此,我尝试通过jquery-ajax-click方法发送参数。客户端代码上的每一件事都很好,因为我没有得到任何类型的错误或警告,但同时我也没有在服务器端得到图像。我正试图从长期的经历中找出这个问题,但并没有找到它发生的方式或原因。这是我的客户端代码。。

 $("#excel").on("click", function (e) {
            e.preventDefault();
            html2canvas($("#placeholder").get(0), {
                onrendered: function (canvas) {
                    var img = canvas.toDataURL().replace(/^data[:]image'/(png|jpg|jpeg)[;]base64,/i, "");
                    $.ajax({
                        type: "POST",
                        url: "Default.aspx/MyMethod",
                        data: "img=" + img,
                        success: function (msg) {
                            alert("Data Saved: " + msg);
                        }
                    });
                }
            });
        });

请大家帮帮我。我完全被这种情况惊呆了。需要一个生命救世主。提前谢谢。

这是我的服务器端代码。。

[WebMethod]
public static void MyMethod(string img)
{
    string fileNameWitPath = "D:/Kabir/custom_name.png";
    using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
    {
        using (BinaryWriter bw = new BinaryWriter(fs))
        {
            byte[] data = Convert.FromBase64String(img);//convert from base64
            bw.Write(data);
            bw.Close();
        }
    }
}

这是我的Web服务代码。。

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment  the following line. 
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
[WebMethod]
public static void MyMethod(string img)
{
    string path = HttpContext.Current.Server.MapPath("/") + "Test.jpg";
    //string fileNameWitPath = "D:''Kabir''custom_name.png";
    using (FileStream fs = new FileStream(path, FileMode.Create))
    {
        using (BinaryWriter bw = new BinaryWriter(fs))
        {
            byte[] data = Convert.FromBase64String(img);//convert from base64
            bw.Write(data);
            bw.Close();
        }
    }
}

}

这在firebug中给出了这个错误。。

System.InvalidOperationException: MyMethod Web Service method name is not valid.
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

为什么会出现这种错误?

我无法通过调用ASPX Web方法来创建图像。一旦我将代码移动到ASMX web服务,它就创建了图像。请确保您对文件夹具有权限,并且对于Windows,fileNameWitPath变量上的前斜杠(/)必须是后斜杠('

ASMX

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.IO;
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// <System.Web.Script.Services.ScriptService()> _
[System.Web.Services.WebService(Namespace = "http://tempuri.org/")]
[System.Web.Services.WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class WebService1 : System.Web.Services.WebService
{
    [WebMethod()]
    public void MyMethod(string img)
    {
        string path = HttpContext.Current.Server.MapPath("/") + "Test.jpg";
        using (FileStream fs = new FileStream(path, FileMode.Create)) {
            using (BinaryWriter bw = new BinaryWriter(fs)) {
                byte[] data = Convert.FromBase64String(img);
                bw.Write(data);
                bw.Close();
            }
        }
    }
}

脚本

    $("#excel").on("click", function (e) {
        e.preventDefault();
        html2canvas($("#placeholder").get(0), {
            onrendered: function (canvas) {
                var img = canvas.toDataURL().replace(/^data[:]image'/(png|jpg|jpeg)[;]base64,/i, "");
                        $.ajax({
                            type: "POST",
                            url: "WebService1.asmx/MyMethod",
                            data: "img=" + img,
                            success: function (msg) {
                                alert("Data Saved: " + msg);
                            }
                        });
            }
        });