繁体   English   中英

使用ASP Classic在SQL Server 2005中保存图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM