canvas簽名圖片上傳及入庫問題

wchl發表於2024-03-28

工作需要,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

相關文章