📄 defaultvb.aspx.vb
字号:
Imports System.Data.OleDb
Imports System.IO
Imports Telerik.WebControls
Imports Telerik.WebControls.RadUploadUtils
Namespace Telerik.UploadExamplesVBNet.PhotoGallery
Public Class DefaultVB
Inherits Telerik.QuickStart.XhtmlPage
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents upload1 As RadUpload
Protected WithEvents progressArea1 As RadUploadProgressArea
Protected WithEvents btnUpload As Button
Protected WithEvents gridCurrentImages As DataGrid
Protected WithEvents lblNoCurrentImages As Label
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
#Region "Private members"
Private Shared _connectionString As String = Nothing
Private Const CONNECTION_STRING_BASE As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User ID=;Password=;"
#End Region
#Region "Utility members"
Public Const MAX_THUMBNAIL_WIDTH As Integer = 60
Public Const MAX_THUMBNAIL_HEIGHT As Integer = 60
Public Shared Function GetConnectionString(ByVal Request As HttpRequest) As String
If _connectionString Is Nothing Then
_connectionString = String.Format(CONNECTION_STRING_BASE, Request.MapPath("./PhotoGallery.mdb"))
End If
Return _connectionString
End Function
#End Region
#Region "Private methods"
Private Sub BindGrid()
Dim table As DataTable = GetImageList()
If table.Rows.Count > 0 Then
lblNoCurrentImages.Visible = False
gridCurrentImages.Visible = True
gridCurrentImages.DataSource = table
gridCurrentImages.DataBind()
Else
gridCurrentImages.Visible = False
lblNoCurrentImages.Visible = True
End If
End Sub
Private Function GetImageList() As DataTable
Dim conn As OleDbConnection = New OleDbConnection(GetConnectionString(Request))
conn.Open()
Dim command As OleDbCommand = New OleDbCommand("SELECT ImageID, [Name], [Size] FROM Images", conn)
Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(command)
Dim toReturn As DataTable = New DataTable
adapter.Fill(toReturn)
If Not conn.State = ConnectionState.Closed Then
conn.Close()
End If
Return toReturn
End Function
Private Sub UpdateDb(ByVal uploadedFiles As UploadedFileCollection)
Dim conn As OleDbConnection = New OleDbConnection(GetConnectionString(Request))
conn.Open()
Dim command As OleDbCommand = New OleDbCommand("INSERT INTO Images ([Name], [Size], Thumbnail, [Image]) VALUES (?, ?, ?, ?)", conn)
Dim currentFile As UploadedFile
For Each currentFile In uploadedFiles
Dim tempFileName As String = Path.GetTempFileName()
currentFile.SaveAs(tempFileName, True)
command.Parameters.Clear()
command.Parameters.Add("@Name", currentFile.FileName.Substring(currentFile.FileName.LastIndexOf("\") + 1))
command.Parameters.Add("@Size", currentFile.ContentLength)
command.Parameters.Add("@Thumbnail", GetThumbnail(tempFileName))
command.Parameters.Add("@Image", GetImage(tempFileName))
command.ExecuteNonQuery()
If System.IO.File.Exists(tempFileName) Then
System.IO.File.Delete(tempFileName)
End If
Next
If Not conn.State = ConnectionState.Closed Then
conn.Close()
End If
End Sub
Private Sub DeleteImage(ByVal imageID As Integer)
Dim conn As OleDbConnection = New OleDbConnection(GetConnectionString(Request))
conn.Open()
Dim command As OleDbCommand = New OleDbCommand("DELETE FROM Images WHERE ImageID = ?", conn)
command.Parameters.Add("@ImageID", imageID)
command.ExecuteNonQuery()
If Not conn.State = ConnectionState.Closed Then
conn.Close()
End If
End Sub
Private Function GetThumbnail(ByVal realFileName As String) As Byte()
Dim originalImage As System.Drawing.Image = System.Drawing.Image.FromFile(realFileName)
Dim realThumbDimensions As Integer() = GetProportionalThumbnailSize(originalImage.Width, originalImage.Height)
Dim myCallback As System.Drawing.Image.GetThumbnailImageAbort = _
New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
Dim thumbnail As System.Drawing.Image = originalImage.GetThumbnailImage(realThumbDimensions(0), _
realThumbDimensions(1), _
myCallback, _
IntPtr.Zero)
Dim stream As MemoryStream = New MemoryStream
thumbnail.Save(stream, originalImage.RawFormat)
originalImage.Dispose()
Return stream.ToArray()
End Function
Public Function ThumbnailCallback() As Boolean
Return False
End Function
Private Function GetProportionalThumbnailSize(ByVal originalWidth As Integer, ByVal originalHeight As Integer) As Integer()
Dim realWidth As Integer = MAX_THUMBNAIL_WIDTH
Dim realHeight As Integer = MAX_THUMBNAIL_HEIGHT
If originalWidth > originalHeight Then
realHeight = Math.Round(originalHeight * MAX_THUMBNAIL_WIDTH / originalWidth)
Else
realWidth = Math.Round(originalWidth * MAX_THUMBNAIL_HEIGHT / originalHeight)
End If
Return New Integer() {realWidth, realHeight}
End Function
Private Function GetImage(ByVal realFileName As String) As Byte()
Dim fs As FileStream = File.OpenRead(realFileName)
Dim toReturn() As Byte = Array.CreateInstance(GetType(Byte), fs.Length)
fs.Read(toReturn, 0, fs.Length)
fs.Close()
Return toReturn
End Function
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
BindGrid()
End If
End Sub
Private Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpload.Click
UpdateDb(upload1.UploadedFiles)
BindGrid()
End Sub
Private Sub gridCurrentImages_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles gridCurrentImages.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim currentData As DataRowView = CType(e.Item.DataItem, DataRowView)
Dim haImageLink As HtmlAnchor = CType(e.Item.FindControl("haImageLink"), HtmlAnchor)
haImageLink.HRef = String.Format("./ShowImageVB.aspx?type=full&imgid={0}", currentData("ImageID").ToString())
Dim himgImage As HtmlImage = CType(e.Item.FindControl("himgImage"), HtmlImage)
himgImage.Src = String.Format("./ShowImageVB.aspx?type=thumb&imgid={0}", currentData("ImageID").ToString())
End If
End Sub
Private Sub gridCurrentImages_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles gridCurrentImages.ItemCommand
If e.CommandName = "Delete" Then
Dim imageID As Integer = CType(gridCurrentImages.DataKeys(e.Item.ItemIndex), Integer)
DeleteImage(imageID)
If gridCurrentImages.Items.Count > gridCurrentImages.PageSize And _
gridCurrentImages.Items.Count Mod gridCurrentImages.PageSize = 1 Then
gridCurrentImages.CurrentPageIndex = gridCurrentImages.CurrentPageIndex - 1
End If
BindGrid()
End If
End Sub
Private Sub gridCurrentImages_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles gridCurrentImages.PageIndexChanged
gridCurrentImages.CurrentPageIndex = e.NewPageIndex
BindGrid()
End Sub
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -