我有点卡在这里。我知道我可以使用 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解码的函数,但我不知道如果它真的有效,但它确实需要很长时间才能运行。
我还在这里找到了这个链接:ASP 经典的 Base64 图像解码器,但我想这是一个 Microsoft 不建议使用的 32 位组件...我想我正在此处向社区寻求有关将 html5 画布图像保存到服务器上的建议。
您可以使用 XML 元素指定bin.base64
通过创建的数据类型DomDocument
编码/解码 Base64 数据的实例。
然后您可以使用以下命令将获得的二进制文件保存到磁盘Stream
目的。
这两个库均支持 64 位。假设您发送的内容将在服务器端的 Request 集合(没有 json 等的经典 post 方法)中可用,以下代码可以解决问题,或者在最坏的情况下我确信这可以为您提供洞察力。
保存图像.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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)