⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultvb.aspx.vb

📁 Telerik是很大的第三方软件制造商
💻 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&amp;imgid={0}", currentData("ImageID").ToString())
                Dim himgImage As HtmlImage = CType(e.Item.FindControl("himgImage"), HtmlImage)
                himgImage.Src = String.Format("./ShowImageVB.aspx?type=thumb&amp;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 + -