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

标签 javascript asp-classic base64 html5-canvas

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

因此,使用我的 HTML 页面上的这段代码,我提取了 Canvas 数据(我从 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 元素,但我似乎找不到一个好的方法来解码它,或者甚至将其输出为二进制文件...我想我听说经典的 ASP 不擅长进行 base64 解码,在另一个测试中我确实找到了一个可以进行 base64 解码的函数,但我不知道如果它真的有效,但它确实需要很长时间才能运行。
我还在这里找到了这个链接:base64 image decoder for ASP classic ,但我猜这是 Microsoft 不建议使用的 32 位组件……我想我正在向社区寻求有关将 html5 Canvas 图像保存到服务器上的建议。

最佳答案

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

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

关于javascript - 如何使用经典 ASP 保存 Canvas 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12899590/

相关文章:

string - Base64 解码 - 字符串中的 nul

javascript - 如何删除/删除 Firebase 上的节点

javascript - 从数组中删除第一个元素并返回数组减去第一个元素

http - 在经典 ASP 中读取 header 值时遇到问题

visual-studio - 如何在 VS 2012 中调试经典 ASP 应用程序

session - 在经典 asp 中,我可以在 Session 对象中存储数据库连接吗?

java - Android端和php端的HmacSHA1结果不同

javascript - Phonegap 编码图像 base64

javascript - 是否允许使用 client_id 进行身份验证的 Javascript Instagram 应用程序?

javascript - 遍历 Typescript 中的对象数组