2011-11-07 59 views
1

我想上傳一個圖像和保存圖像名稱在數據庫中作爲會話名稱與擴展名爲.jpg 我有問題,只有圖像名稱保存在數據庫中,不擴展名。我正在使用此代碼上傳圖像與擴展名不工作

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 
+0

至於旁註,a你確定上傳的圖像是一個JPEG圖像。就我所見代碼而言,它很可能是一個PNG imgae或TXT文件。 –

+1

1.它只插入會話名稱,因爲這是你正在把所有的東西放入SQL中,2)在任何時候都使用SQL參數,以避免SQL注入。 – samjudson

+2

這個小代碼可以使用這個代碼。 –

回答

-1

變化

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) 
3

您沒有插入您保存的相同字符串,您必須添加擴展名,請參見下文。

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()