从Base64(ASP)发布图像

时间:2014-09-15 20:34:03

标签: asp-classic base64 decode

我正在尝试使用以下代码,以便将作为表单字段捕获的base64画布对象的图像结果发布。请注意,“sign”是使用以下结果发布的字段(无图像转换):“data:image / png; base64,iVBORw0KGgoAA ...”

我知道我需要从转换中删除“data:image / png; base64”,这就是我首先偶然发现下面的代码。

    dataurl = Request("sign")
    data = dataurl.Substring(dataurl.IndexOf(",") + 1)
    newsign = Convert.FromBase64String(data)
    Page.Canvas.DrawImage newsign, "x=216; y=705"

我收到以下错误:

  

需要对象:'dataurl'

有人能指出我的语法错误,所以我可以让它工作吗?


更新
好的 - 这就是我现在出去的地方。但我收到一个错误“需要对象:'转换'”

dataurl = Request("sign")
text = response.write(Mid(dataurl,23))
newsign = Convert.FromBase64String(text)
Page.Canvas.DrawImage newsign, "x=216; y=705"

在我的脑海中,我告诉它转换从第23个字符开始的字符串输出,但很明显,代码与我的思维过程不一致。我希望这是一个非常容易发现和修复的东西。思考/想法?

1 个答案:

答案 0 :(得分:0)

VBScript / Classic ASP中没有SubstringIndexOf

您要么尝试在Classic asp中使用Javascript,这有点不同,或者您需要使用本机VBScript函数。即:Instr()Mid()


关于编辑,有些事情可以做,有些则做不到。为什么?因为您需要使用VBScript或Javascript,而不是两者。 VBScript不会处理像Javascript这样的对象,这就是你收到错误的原因。

如果您想在经典asp中使用服务器端Javascript,请查看此处:Writing JavaScript in ASP classic

考虑到您的代码已经在Javascript中,这可能是您最好的选择。您将测试原始代码,而不是您的编辑 - 因为此时编辑完全无效且毫无价值。

但是,如果您要在VBScript中重写它,则需要进行某些更改:

dataurl = Request("sign")
data = Mid(dataurl,Instr(dataurl,",") + 1)

这很容易,现在:

newsign = FromBase64String(data) 

您可以在此处查看构建功能的预构建代码:http://ghads.wordpress.com/2008/10/17/vbscript-readwrite-binary-encodedecode-base64/

您必须自己编写此功能。

Set PageCanvasDrawImage = Server.CreateObject("YourObjectsName")
PageCanvasDrawImage newsign, "x=216; y=705" 
Set PageCanvasDrawImage = Nothing

首先,您需要查看其Web服务器com +对象中的打包.dll注册表,然后一旦在CLR(vbscript)中注册,就可以使用Server.CreateObject来使用它。这是一个棘手的部分,因为ASP Classic并不真正支持,而Canvas是一种更新的技术。您必须查看软件提供商是否支持这样的.dll文件,或者在线挖掘支持它的组件,或者自己编写一个。