Asp.net 正在上载扩展名不工作的图像
我正在尝试上载一个图像,并将图像名称保存在数据库中,作为扩展名为.jpg的会话名称 我遇到的问题是,只有图像名称保存在数据库中,而不是扩展名。我正在使用这个代码Asp.net 正在上载扩展名不工作的图像,asp.net,sql,vb.net,Asp.net,Sql,Vb.net,我正在尝试上载一个图像,并将图像名称保存在数据库中,作为扩展名为.jpg的会话名称 我遇到的问题是,只有图像名称保存在数据库中,而不是扩展名。我正在使用这个代码 Dim strPath As String = Server.MapPath("~/UserPics/") If AsyncFileUpload1.HasFile Then AsyncFileUpload1.SaveAs(strPath & Session("UserName").ToSt
Dim strPath As String = Server.MapPath("~/UserPics/")
If AsyncFileUpload1.HasFile Then
AsyncFileUpload1.SaveAs(strPath & Session("UserName").ToString() & ".jpg")
lblUploadMessage.Text = "You uploaded " + AsyncFileUpload1.FileName
con.Open()
Dim objCmd As New SqlCommand("insert into regist( image1) values ('" & Session("UserName").ToString() & "')", con)
objCmd.ExecuteNonQuery()
con.Close()
Else
lblUploadMessage.Text = "Please select an image first"
Return
End If
如果插入的字符串与保存的字符串不同,则必须添加扩展名,请参见下文。此外,请从发布的文件中添加扩展名,而不是硬编码:
Dim objCmd As New SqlCommand("insert into regist(image1) values ('" & _
Session("UserName").ToString() & _
System.IO.Path.GetExtension(AsyncFileUpload1.PostedFile.FileName) & "')", con)
请将代码更改为“使用参数”,以防止SQL注入攻击:
Dim objCmd As New SqlCommand(con)
Dim sql As String = "insert into regist(image1) values (@image)"
Dim param(1) As SqlParameter
param(0) = New SqlParameter("@image", SqlDbType.VarChar)
param(0).Value = Session("UserName").ToString() & _
System.IO.Path.GetExtension(AsyncFileUpload1.PostedFile.FileName);
objCmd.Parameters.AddRange(param)
objCmd.ExecuteNonQuery()
con.Close()
改变
到
作为旁注,您确定上传的图像是jpeg图像吗。从代码中可以看出,它很可能是一个PNG imgae或TXT文件。它只插入会话名称,因为这是您在SQL中输入的全部内容,2)始终使用SQL参数,以避免SQL注入。小bobby tables将从这段代码中获得乐趣。
Dim objCmd As New SqlCommand("insert into regist( image1) values ('" & Session("UserName").ToString() & "')", con)
Dim objCmd As New SqlCommand("insert into regist( image1) values ('" & Session("UserName").ToString() & ".jpg" & "')", con)