我正在尝试使用以下代码,以便将作为表单字段捕获的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个字符开始的字符串输出,但很明显,代码与我的思维过程不一致。我希望这是一个非常容易发现和修复的东西。思考/想法?
答案 0 :(得分:0)
VBScript / Classic ASP中没有Substring
或IndexOf
。
您要么尝试在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文件,或者在线挖掘支持它的组件,或者自己编写一个。