编程语言
首页 > 编程语言> > javascript-如何使用经典ASP保存画布图像?

javascript-如何使用经典ASP保存画布图像?

作者:互联网

我有点卡在这里.我知道我可以使用canvas.toDataURL生成base64编码的字符串,以传递到服务器上的经典ASP页面.但是我似乎找不到答案的问题是如何处理这些数据,以便可以将其保存在服务器上的某个位置.

因此,使用我的HTML页面上的这段代码,我提取了画布数据(我从StackOverflow上的另一篇文章中提取了此数据):

var dataURL = renderedCanvas.toDataURL("image/png");    
dataURL = dataURL.replace('data:image/png;base64,', '');

var areturn = $.ajax({
  url: "http://127.0.0.1/mySite/saveImage.asp",
  type: "POST",
  data: '{ "imageData" : "' + dataURL + '" }',
  dataType: "json",
  beforeSend: function(x) {
      x.overrideMimeType("application/j-son;charset=UTF-8");
  }
}).done(function(result) {
    console.log("Success Done!\n" + result);
}).always(function(data) {
    console.log("Always:\n" + data.responseText);
}); 

但是现在我不清楚,一旦进入服务器端,该如何处理数据…我可以拉取Request.Form元素,但似乎找不到找到base64对其进行解码的好方法,或者甚至将其输出为二进制文件…我想我听说经典的ASP不能很好地进行base64解码,在另一个测试中,我确实找到了可以进行base64解码的函数,但是我无法分辨如果它确实有效,但是确实需要很长时间才能运行.
我还在这里找到此链接:base64 image decoder for ASP classic,但是我想这是Microsoft不推荐使用的32位组件.我想我正在向这里的社区寻求有关将html5画布图像保存到服务器上的建议.

解决方法:

您可以使用XML元素来指定通过DomDocument实例创建的bin.base64数据类型,以对Base64数据进行编码/解码.
然后,您可以使用Stream对象将获得的二进制文件保存到磁盘.这两个库都支持64位.假设您发送的内容在服务器端的Request集合(没有json等的经典发布方法)中可用,那么以下代码可以解决问题,或者在最坏的情况下,我相信这可以为您提供深入的了解.

saveImage.asp

Function Base64Data2Stream(sData)
    Set Base64Data2Stream = Server.CreateObject("Adodb.Stream")
        Base64Data2Stream.Type = 1 'adTypeBinary
        Base64Data2Stream.Open
    With Server.CreateObject("MSXML2.DomDocument.6.0").createElement("b64")
        .dataType = "bin.base64"
        .text = sData
        Base64Data2Stream.Write .nodeTypedValue 'write bytes of decoded base64 to stream
        Base64Data2Stream.Position = 0
    End With
End Function

Dim CanvasStream
Set CanvasStream = Base64Data2Stream(Request.Form("imageData"))

'Write binary to Response Stream
'Response.BinaryWrite CanvasStream.Read

'Write binary to File
CanvasStream.SaveToFile Server.Mappath("imgFileFromCanvas.png"), 2 'adSaveCreateOverWrite

标签:base64,html5-canvas,asp-classic,javascript
来源: https://codeday.me/bug/20191031/1978297.html