【问题标题】:Saving image in SQL Server 2005 using ASP Classic使用 ASP Classic 在 SQL Server 2005 中保存图像
【发布时间】:2024-01-16 06:21:01
【问题描述】:

我的 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 image sql-server-2005 asp-classic sql-update


    【解决方案1】:

    我能够解决我自己的问题,我在我的 SQL 语句中添加了“N”,来自

    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)。我的代码现在又可以工作了。耶!

    【讨论】:

      最近更新 更多