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