Asp classic 使用经典ASP将Base64保存到映像
我一直在尝试使用经典ASP从服务器端将base64文件保存为图像。我想要的是它自动保存文件到一个特定的位置,并给它一个文件名,现在我可以很好地编码这方面的内容。但是,如果不先在浏览器上渲染,我就无法获得保存图像的代码。这对我不起作用,因为我使用的脚本将是自动导出的,并且没有用户输入 下面的代码显示在网页中,并询问用户在何处保存图像。只是重申一下,我需要它自动保存(无需用户输入)Asp classic 使用经典ASP将Base64保存到映像,asp-classic,Asp Classic,我一直在尝试使用经典ASP从服务器端将base64文件保存为图像。我想要的是它自动保存文件到一个特定的位置,并给它一个文件名,现在我可以很好地编码这方面的内容。但是,如果不先在浏览器上渲染,我就无法获得保存图像的代码。这对我不起作用,因为我使用的脚本将是自动导出的,并且没有用户输入 下面的代码显示在网页中,并询问用户在何处保存图像。只是重申一下,我需要它自动保存(无需用户输入) 由于安全原因,无法执行此操作。如果网页可以在没有任何用户交互的情况下随机选择在本地系统上存储文件的位置,则会出现混乱。
由于安全原因,无法执行此操作。如果网页可以在没有任何用户交互的情况下随机选择在本地系统上存储文件的位置,则会出现混乱。使用adodb.stream对象在服务器端存储图像,如下所示:
dim bStream : set bStream = server.CreateObject("ADODB.stream")
bStream.type = adTypeBinary
call bStream.Open()
call bStream.Write( binData )
call bStream.SaveToFile( FullName, adSaveCreateOverWrite)
call bStream.close()
set bStream = nothing
接收base64字符串的服务器端代码如下所示,请注意,这是从工作系统获取的代码,因此有一些变量(如carreg/auditdate)用作为创建的文件命名的唯一标识符:
function convBase64 (convVal, getCarReg, convType, AuditDate, AuditReference)
base64String = convVal
carReg = (UCase(getCarReg))
carReg = (Replace(getCarReg," ",""))
AuditDate= CDate(AuditDate)
ConvAuditDate = ((DatePart("d",AuditDate))& "_" & (DatePart("m",AuditDate)) & "_" & (DatePart("YYYY",AuditDate)))
select case convType
Case "Sig1"
FileNameSuffix = "AuditorsSignature"
Case "Sig2"
FileNameSuffix = "BodyShopSignature"
Case "Car"
FileNameSuffix = "DamageCanvas"
end select
ImageFileName = FileNameSuffix & "-" & carReg & "-" & ConvAuditDate & ".jpg"
Set tmpDoc = Server.CreateObject("MSXML2.DomDocument")
Set nodeB64 = tmpDoc.CreateElement("b64")
nodeB64.DataType = "bin.base64" ' stores binary as base64 string
nodeB64.Text = Mid(base64String, InStr(base64String, ",") + 1) ' append data text (all data after the comma)
dim bStream : set bStream = server.CreateObject("ADODB.stream")
bStream.type = 1
call bStream.Open()
call bStream.Write( nodeB64.NodeTypedValue )
call bStream.SaveToFile(Server.Mappath("NoneVehicleImages/" & AuditReference & "/" & ImageFileName), 2 )
call bStream.close()
set bStream = nothing
convBase64 = "\\iis_fdg$\AuditExport\NoneVehicleImages\" & AuditReference & "\" & ImageFileName
end function
感谢您的回复,我已经用图像动态地完成了这项工作,所以我知道这是可能的,只是不是从base64图像开始的,所以我需要将base64转换并保存为图像的代码。感谢您的回复,我不确定我将如何在上述代码的上下文中使用它(转换base64,然后传递要保存的图像)。你能解释一下或者举个完整的例子吗。谢谢again@user2029541-你能告诉我你是怎么做到的吗?我还在尝试让ASP/VBscript将base64保存到服务器上的映像文件中。-谢谢嗨,Tamak,我今天不在代码所在的地方工作,我会把它挖出来,明天发布。然而,它在经典的ASP中不是VB。net@user2029541-太棒了。。。正是我想要的,谢谢!我明天再查@user2029541-请记住在您有时间时分享该代码,再次感谢!
function convBase64 (convVal, getCarReg, convType, AuditDate, AuditReference)
base64String = convVal
carReg = (UCase(getCarReg))
carReg = (Replace(getCarReg," ",""))
AuditDate= CDate(AuditDate)
ConvAuditDate = ((DatePart("d",AuditDate))& "_" & (DatePart("m",AuditDate)) & "_" & (DatePart("YYYY",AuditDate)))
select case convType
Case "Sig1"
FileNameSuffix = "AuditorsSignature"
Case "Sig2"
FileNameSuffix = "BodyShopSignature"
Case "Car"
FileNameSuffix = "DamageCanvas"
end select
ImageFileName = FileNameSuffix & "-" & carReg & "-" & ConvAuditDate & ".jpg"
Set tmpDoc = Server.CreateObject("MSXML2.DomDocument")
Set nodeB64 = tmpDoc.CreateElement("b64")
nodeB64.DataType = "bin.base64" ' stores binary as base64 string
nodeB64.Text = Mid(base64String, InStr(base64String, ",") + 1) ' append data text (all data after the comma)
dim bStream : set bStream = server.CreateObject("ADODB.stream")
bStream.type = 1
call bStream.Open()
call bStream.Write( nodeB64.NodeTypedValue )
call bStream.SaveToFile(Server.Mappath("NoneVehicleImages/" & AuditReference & "/" & ImageFileName), 2 )
call bStream.close()
set bStream = nothing
convBase64 = "\\iis_fdg$\AuditExport\NoneVehicleImages\" & AuditReference & "\" & ImageFileName
end function