一、程式功能:當上傳圖片大小超過8K或格式不符時禁止上傳,上傳通過之後,用DataGrid顯示上傳的圖片
二、建立資料庫
在MSSQL的NorthWind資料庫中建立一個users表,表設計如下:
列名 |
資料類型 |
長度 |
是否可以為空白 |
其它 |
id |
int |
4 |
否 |
主鍵,設標識為是,識別值種子1,遞增量1 |
headimg |
varchar |
50 |
否 |
|
三、表單設計:
1、建立ASP.NET Web應用程式,命名為DataGrid3,儲存路徑為http://192.168.0.1/DataGrid3(註:我機子上的網站的IP是192.168.0.1的主目錄是D:\web檔案夾)然後點擊確定。
2、在方案總管視窗中,將WebForm1.aspx重新命名為UpPicture.aspx,然後從工具箱中向表單添加一個Label控制項、一個BUtton按鈕.然後從一個HTML工具箱中向表單添加一個File field控制項表單介面如下:
3、在方案總管視窗中右擊項目,選擇添加-新項-Web表單,名稱設為ViewPicture.aspx。然後在開啟的表單中添加一個DataGrid控制項。
4、右擊DataGrid控制項,再點擊下方的“屬性產生器”,開啟“DataGrid屬性視窗”。在“DataGrid屬性視窗”點擊“列”,取消“在運行時自動建立列”前的對勾,向選定的列中添加一個繫結資料行,在頁首文本中輸入“序號”,在資料欄位中輸入ID。再向選定的列中添加一個繫結資料行,在頁首文本中輸入“頭像”,在資料欄位中輸入headimg。然後點擊確定。
表單介面如下;
四、代碼設計:
1、UpPicture.aspx
Imports System.Data.SqlClient Public Class WebForm1 Inherits System.Web.UI.Page '表單代碼省略 '上傳圖片 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim img As String '定義postedfile檔案是儲存使用者上傳的檔案 Dim postedfile As HttpPostedFile = File1.PostedFile '定義一個變數儲存使用者上傳檔案的大小 Dim intImgSize As Int32 '擷取使用者上傳檔案的大小, intImgSize = postedfile.ContentLength '如果要上傳的檔案不為空白 If intImgSize <> 0 Then '如果大於8K, 則禁止上傳 If intImgSize > 8000 Then Label1.Text = "圖片太大" Exit Sub End If '定義一個變數儲存使用者上傳圖片的檔案類型 Dim strImgType As String = postedfile.ContentType '只接受.gif格式的圖片 Dim filesplit() As String = Split(strImgType, "/") strImgType = filesplit(filesplit.Length - 1) If strImgType <> "gif" Then Label1.Text = "圖片格式不對" Exit Sub End If '儲存要上傳的檔案的整個路徑 filesplit = Split(postedfile.FileName, "\") '取得上傳檔案的檔案名稱 Dim filename As String = filesplit(filesplit.Length - 1) '將上傳的圖片儲存到伺服器目前的目錄的headimg檔案夾中 postedfile.SaveAs(Server.MapPath("headimg") & "\" & filename) '定義一個變數儲存伺服器上當前上傳圖片的路徑 Dim imgpath As String = "headimg\" & filename img = "<img src=" & imgpath & " border=0>" '將圖片儲存到資料庫 Dim scon As New SqlConnection("server=localhost;database=northwind;uid=sa;pwd=123") scon.Open() Dim scom As New SqlCommand("insert into users values (@img)", scon) scom.Parameters.Add("@img", SqlDbType.VarChar).Value = img Try scom.ExecuteNonQuery() Catch ex As Exception End Try scon.Close() '轉到查看圖片視窗 Response.Redirect("ViewPicture.aspx") End If End Sub End Class |
2、ViewPicture.aspx代碼:
Imports System.Data.SqlClient Public Class ViewPicture Inherits System.Web.UI.Page ‘表單代碼省略 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim scon As New SqlConnection("server=localhost;database=northwind;uid=sa;pwd=123") Dim sda As New SqlDataAdapter("select * from users", scon) Dim ds As New DataSet Try sda.Fill(ds) Catch ex As Exception End Try DataGrid1.DataSource = ds DataGrid1.DataBind() End Sub End Class |