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

2023-05-14前端开发问题
18

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

问题描述

限时送ChatGPT账号..

我有点卡在这里.我知道我可以使用 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 保存画布图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

js删除数组中指定元素的5种方法
在JavaScript中,我们有多种方法可以删除数组中的指定元素。以下给出了5种常见的方法并提供了相应的代码示例: 1.使用splice()方法: let array = [0, 1, 2, 3, 4, 5];let index = array.indexOf(2);if (index -1) { array.splice(index, 1);}// array = [0,...
2024-11-22 前端开发问题
182

JavaScript小数运算出现多位的解决办法
在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会...
2024-10-18 前端开发问题
301

JavaScript(js)文件字符串中丢失"\"斜线的解决方法
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转...
2024-10-17 前端开发问题
437

layui中table列表 增加属性 edit="date",不生效怎么办?
如果你想在 layui 的 table 列表中增加 edit=date 属性但不生效,可能是以下问题导致的: 1. 缺少日期组件的初始化 如果想在表格中使用日期组件,需要在页面中引入 layui 的日期组件,并初始化: script type="text/javascript" src="/layui/layui.js"/scrip...
2024-06-11 前端开发问题
455

Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)...
2024-04-20 前端开发问题
5

CoffeeScript 总是以匿名函数返回
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)...
2024-04-20 前端开发问题
13