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

How to save canvas image using classic ASP?(如何使用经典 ASP 保存画布图像?)
本文介绍了如何使用经典 ASP 保存画布图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm a bit stuck here. I know that I can use the canvas.toDataURL to produce a base64 encoded string to pass to a classic ASP page on my server. But the problem I can't seem to find an answer to is how to process this data so I can save it someplace on my server.

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

So with this snippet of code on my HTML page, I pull the canvas data (I pulled this from another post here at 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!
" + result);
}).always(function(data) {
    console.log("Always:
" + data.responseText);
}); 

但是我现在不清楚一旦我在服务器端如何处理数据......我可以提取 Request.Form 元素,但我似乎找不到任何 base64 解码的好方法它,甚至将其输出为二进制文件...我想我听说经典的 ASP 不擅长进行 base64 解码,在另一个测试中我确实找到了一个可以进行 base64 解码的函数,但我不能不知道它是否真的有效,但它确实需要很长时间才能运行.我还在这里找到了这个链接:用于 ASP 经典的 base64 图像解码器,但我猜这是微软不推荐使用的 32 位组件……我想我正在向社区寻求有关将 html5 画布图像保存到服务器上的建议.

But I'm unclear now what to do with the data once I'm on the server side... I can pull the Request.Form element, but I can't seem to find a good way to either base64 decode it, or even output it as a binary file... I guess I've heard that classic ASP isn't any good at doing base64 decoding, and in another test I did find a function that did the base64 decode, but I couldn't tell if it really worked, but it did take a long time to run. I also found this link here: base64 image decoder for ASP classic, but I guess this is a 32bit component that Microsoft doesn't recommend using... I guess I'm looking to the community here for suggestions on saving out an html5 canvas image onto the server.

推荐答案

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

You could use an XML element specifying bin.base64 data type that created through a DomDocument instance to encoding / decoding Base64 data.
Then you can save obtained binary to disk using a Stream object.
Both of these libraries are 64 bit supported. Assuming the content you sent will be available in a Request collection (classic post methods without json etc.) on the server-side, following code solves the problem or at worst I'm sure that gives you insight.

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

这篇关于如何使用经典 ASP 保存画布图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)