将Html2canvas图像保存到asp.net中的服务器

问题描述 投票:2回答:1

我想将HTM2Canvas图像保存到服务器。尝试了一些代码,但无法将图像保存到目录。我想保存目录中的屏幕截图,并希望保存数据库的路径。

我已经发布了我的代码,在这个例子中我只想将图像保存在目录中。但无法做到这一点。请帮我解决这个问题。

    <form id="myForm" method="post" action="demo.aspx"  runat="server">
    <div id="target">

<div id="wrapper">
  <div id="header">
  <div class="text">
  <Span>This Space for rent/price</Span>
    <h1>This Space for Property
      Address</h1>
      <h1>This Space for Data</h1>
      </div>
    </div>
  <h1 style="text-transform:uppercase;">This Space For advert heading</h1>


  </div>

    </div>
         <asp:Button ID="btnSave" runat="server" Text="Save As Image" OnClientClick="return PrintDiv();" />     

    <script src="js/html2canvas.js"></script>
    <script type="text/javascript">
        function PrintDiv() {
            html2canvas(document.body, {
                onrendered: function (canvas) {
                    var img = canvas.toDataURL().replace(/^data[:]image\/(png|jpg|jpeqg)[;]base64,/i, "");
                    alert(img);
                    $.ajax({
                        type: "POST",
                        url: "demo.aspx/UploadImage",                      
                        data: {"imageData": name },
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg) {
                            alert(msg.d);
                        }
                    });

                }
            });
            function OnSuccess(response) {
                alert(response.d);
            }
        }
    </script>

    </form>
</body>
</html>


ASP.NET Code behind File:


    [WebMethod()]   

    public static void UploadImage(string imageData)
    {
        string fileNameWitPath = "~/Client/ScreenShot/custom_name.png";
        using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
        {
            using (BinaryWriter bw = new BinaryWriter(fs))
            {
                byte[] data = Convert.FromBase64String(imageData);//convert from base64
                bw.Write(data);
                bw.Close();
            }
        }
    }
asp.net
1个回答
1
投票

试试这个javascript

html2canvas(document.body, {
     onrendered: function (canvas) {
        var image = canvas.toDataURL("image/png");
        image = image.replace('data:image/png;base64,', '');
        var param = { imageData: image };
        $.ajax({
              url: "demo.aspx/UploadImage",
                        data: JSON.stringify(param),
                        dataType: "json",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            alert('Image saved successfully !');
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            var err = eval("(" + XMLHttpRequest.responseText + ")");
                        }
                    });
                    }
                });

尝试这个代码背后

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
        public static void UploadImage(string imageData)
        {
            try
            {
                string fileNameWitPath = "~/Client/ScreenShot/custom_name.png";
                using (FileStream fs = new FileStream(fileNameWithPath, FileMode.Create))
                {
                    using (BinaryWriter bw = new BinaryWriter(fs))
                    {
                        byte[] data = Convert.FromBase64String(imageData);
                        bw.Write(data);
                        bw.Close();
                    }
                }
            }
            catch (Exception ex)
            {

            }           
        }
© www.soinside.com 2019 - 2024. All rights reserved.