zoukankan      html  css  js  c++  java
  • ASP.NET 2.0 - 如何把上传的文件保存到数据库字段 (转自章立民CnBlogs)

     

    许多朋友询问如何将用户在网页上所选取的图片写入数据库字段,我们撰写了一个网页范例来示范如何实作。以下是这一个网页范例的操作流程:

    1.           请如图表 1 所示,按下「先于数据库中建立所需的数据表」按钮,此举会在「北风贸易」数据库中建立一个名称为「练习作者」的数据表,以便用来储存包括照片在内的数据记录。


    图表 1

    2.           请如图表 2 所示,按下「浏览」按钮来选取照片。


    图表 2

    3.           请如图表 3 所示,于「选择文件」对话框中选取所需的照片并按下「开启」按钮。


    图表 3

    4.           请如图表 4 所示,按下「上传并写入数据库」按钮。


    图表 4

    5.           反复上述步骤的操作,直到您已新增完毕所需的各笔数据记录之后,请如图表 5 所示,按一下超级链接「检视数据表的照片数据」以便检视我们所所上传并写入至数据库字段的数据。


    图表 5

    了解了网页范例的操作方式之后,我们要来检视其开发技巧。我想,本范例最关键的技巧,就是如何将包括照片在内的数据记录新增至数据表,此项作业的程序代码撰写于「上传并写入数据库」按钮的 Click 事件处理例程中,兹列示如下:

    Protected Sub btnUpload_Click(ByVal sender As Object, _
     ByVal e As System.EventArgs) Handles btnUpload.Click
     ' 利用 SqlConnectionStringBuilder 对象来构建连接字符串。
     Dim connectStringBuilder As New SqlConnectionStringBuilder()
     connectStringBuilder.DataSource = "(local)\SQLExpress"
     connectStringBuilder.InitialCatalog = "北风贸易"
     connectStringBuilder.IntegratedSecurity = True

     Try
          ' 建立连接。
          Using con As New SqlConnection(connectStringBuilder.ConnectionString)

            Dim data() As Byte = _
              My.Computer.FileSystem.ReadAllBytes(Me.File1.Value.Trim())
    /*
    Dim fileLen As Integer

            ' 取得上传之照片档的长度。

            fileLen = FileUpload1.PostedFile.ContentLength

            ' 建立一个字节数组来持有文件的内容。
            Dim Input(fileLen) As Byte
            Input = FileUpload1.FileBytes
    */

            Dim updateCMD As SqlCommand = _
            New SqlCommand( _
            "INSERT INTO 练习作者 (作者姓名, 作者玉照) VALUES (@AuthorName, @Photo)", _
            con)

            Dim AuthorNameParameter As SqlParameter = _
              New SqlParameter("@AuthorName", SqlDbType.NVarChar, 10)
            If Me.txtAuthorName.Text.Trim().Equals("") Then
                AuthorNameParameter.Value = "章立民研究室"
            Else
                AuthorNameParameter.Value = Me.txtAuthorName.Text.Trim()
            End If
            updateCMD.Parameters.Add(AuthorNameParameter)

            Dim PhotoParameter As SqlParameter = _
              New SqlParameter("@Photo", SqlDbType.Image)

            PhotoParameter.Value = data
            updateCMD.Parameters.Add(PhotoParameter)
            con.Open()
            updateCMD.ExecuteNonQuery()
            con.Close()

            Me.lblMessage.Text = "成功新增数据记录"
          End Using
     Catch ex As Exception
          Me.lblMessage.Text = "发生错误" & vbCrLf & ex.ToString
          Throw New Exception(ex.Message)
     End Try
    End Sub

    参考数据:
    Visual Basic 2005 文件 IO 与资料存取秘诀 - CH7:探讨大型对象(LOB)
    的存取秘诀
    Visual C# 2005 文件 IO 与资料存取秘诀 - CH7:探讨大型对象(LOB) 的存取秘诀

  • 相关阅读:
    点击有惊喜
    模态框案例
    DOM操作
    定时器
    函数和object
    shell 判断文件出现次数
    shell 判断路径
    shell 循环数组
    shell 判断为空打印
    shell 示例1 从1叠加到100
  • 原文地址:https://www.cnblogs.com/RobotTech/p/606994.html
Copyright © 2011-2022 走看看