canvas签名图片上传及入库问题

工作需要,asp+access建了个简单信息交互平台,表单填报、签名、及查看只能在手机上进行。已实现Base64直接入数据库。有Jccscxj.asp(首页表单填报)、Jccscxjup.asp(手写签名页面)、ajax-cscxj.asp(入库页面)、anco.asp(数据库联接)、cscxjck.asp(填报项查看)等五个asp文件、jcxj.mdb数据库和相关格式JS、css文件。实现步骤:首页填报各项表单-->进入签名页面-->提交签名显示签名结果。经过实践,Base64入库数据太大,想进行优化改进。经过近半月的折腾,问题终于解决。先是把问题想复杂了。是在原base64能直接入库的基础上优化。说明ajax提交的数据是成功的。只是把入库的base64数据改成图片文件存服务器的一个指定目录、数据库只加入链接就行了。所以只需要修改入库文件ajax_cscxj.asp即可。其它文件都不需要改变。笔记留存。
修改ajax_cscxj.asp后的代码:
`

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<%
id = int(Request.form("id"))
id = Right("0000" & id, 4) ' 格式化为4位数,不足部分用0填充
FileName =id & "" & DatePart("yyyy", Now()) & DatePart("m", Now()) & DatePart("d", Now()) & "" & DatePart("h", Now()) & DatePart("n", Now()) & DatePart("s", Now()) '生成文件名
pict=Trim(request.Form("qm_pic")) '获取Form提交过来的img
'分割字符串 base64 找到文件扩展名 picl(1)
picn=split(pict,";base64,")
picl=split(picn(0),"/")
picture=picn(1)

'response.write picn(1)
'response.write "
"
path="UploadIMG_cscxj/" & FileName & "."&picl(1) '存放路径

xmlstr=""&picture&""
Dim xml : Set xml=Server.CreateObject("MSXML2.DOMDocument")
Dim stm : Set stm=Server.CreateObject("ADODB.Stream")
xml.resolveExternals=False
xml.loadxml(xmlstr)
xml.documentElement.setAttribute "xmlns:dt","urn:schemas-microsoft-com:datatypes"
xml.documentElement.dataType = "bin.base64"
stm.Type= 1'adTypeBinary
stm.Open
stm.Write xml.documentElement.nodeTypedValue
stm.SaveToFile Server.MapPath(path)
stm.Close
Set xml=Nothing
Set stm=Nothing
' 更新数据库,存储图片路径
set rs = server.CreateObject("adodb.recordset")
sql = "select * from [jccscxj] where cscxj_id = "&id&""
rs.open sql,conn,1,3
rs("cscxj_qm") = path
rs.update
rs.Close
Set rs = Nothing
response.Write("签名成功")

conn.close
set conn=nothing
%>

`

参考文章:https://blog.csdn.net/u011289462/article/details/128058690

posted @ 2024-03-28 14:35  wchl  阅读(91)  评论(0编辑  收藏  举报