[英]Saving image in SQL Server 2005 using ASP Classic
我的ASP经典代码遇到问题。 为了使您对流程有所了解,该页面将从特定目录上载图像到服务器,重命名文件,然后将文件保存在SQL Server 2005中“图像”作为数据类型的字段中。 这是我的代码:
<!-- #include file="class.mssqlconnect.asp" -->
<%
Const adTypeBinary = 1
Transcode = "S12345678"
strHDLocation = "c:\test\test.bmp"
strFileURL = Server.MapPath("signatures\"& Transcode &".bmp")
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1
objADOStream.LoadFromFile strHDLocation
'Set the stream position to the start
objADOStream.Position = 0
'this will upload and save the file at the same time
objADOStream.SaveToFile strFileURL
Response.Write("Uploaded")
'if file uploaded successfully
Dim sqlRun
sqlRun = "UPDATE Bioser SET Singature = (SELECT BulkColumn FROM OPENROWSET (BULK '" & Server.MapPath("signatures\"& Transcode &".bmp") & "', SINGLE_BLOB) AS Signature) WHERE serviceno = '" & Transcode & "'"
Conn.execute(sqlRun)
Conn.close
objADOStream.Close
Set objADOStream = Nothing
%>
我可以毫无问题地上传图像,但是每次将图像保存到数据库时,它只在Singature字段中保存了“ BLANK”(不是Null)。 我没有收到任何错误消息,我以前可以保存图像(我在图像的表字段中看到一堆字符),甚至在SQL用户名中启用了“ BULKADMIN”角色权限我正在使用...
我也已经尝试使用下面的SQL语句:
"UPDATE Bioser SET Singature = (SELECT * FROM OPENROWSET(BULK '" & Server.MapPath("signatures\"& Transcode &".bmp") & "', SINGLE_BLOB) as Singature) WHERE ServiceNo = '" & Transcode & "'"
现在,我已经陷入困境,需要帮助...感谢那些想回答这个问题的人。
我能够解决自己的问题,我在SQL语句中从
sqlRun = "UPDATE Bioser SET Singature = (SELECT * FROM OPENROWSET (BULK '" & Server.MapPath("signatures\"& Transcode &".bmp") & "', SINGLE_BLOB) as Singature) WHERE ServiceNo = '" & Transcode & "'"
我将其修改为:
sqlRun = "UPDATE Bioser SET Singature = (SELECT * FROM OPENROWSET (BULK N'" & Server.MapPath("signatures\"& Transcode &".bmp") & "', SINGLE_BLOB) as Singature) WHERE ServiceNo = '" & Transcode & "'"
我忘了我需要N才能将图像base64字符串转换为UNICODE(NVARCHAR / NCHAR)。 我的代码现在又可以工作了。 好极了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.