【问题标题】:Opening an image in vb to send into a database - Asp.Net在 vb 中打开图像以发送到数据库 - Asp.Net
【发布时间】:2009-04-22 20:19:54
【问题描述】:

我目前正在修补一个 asp.net 程序,我需要能够将图像发送到 SQL Server 2005 DB。当我使用 asp:fileupload 控件时它工作正常,但诀窍是当用户删除图像时,我应该用服务器中的图像替换它,在代码隐藏中显示“空”。

我知道如何在 vb 中打开、使用和保存文本文件,但我无法在任何地方找到任何关于如何以类似方式打开图像/二进制文件以便我可以将其用作 sql 参数的信息关于更新查询。

下面是使用文件上传控件中的文件是多么容易的示例。

Dim t_id As Integer = Convert.ToInt32(Request.QueryString("id")) 打开() 暗淡图片 As New SqlParameter("@picture", pictureFileUpload.FileBytes) 将 id 作为新的 SqlParameter("@id", t_id) myCommand = 新 SqlCommand("spChangeImage") myCommand.CommandType = CommandType.StoredProcedure myCommand.Connection = conn myCommand.Parameters.Add(图片) myCommand.Parameters.Add(id) myCommand.ExecuteNonQuery() 关()

现在我需要一种方法来打开图像文件并以类似的方式将其设置为参数,但我不知道如何去做。所有搜索结果都集中在打开和查看 html 中的图像,我只需要二进制文件就可以在查询中使用它。我正在尝试使用 binaryreader,但即便如此我也不知道如何实际映射文件。

提前感谢您的帮助!

【问题讨论】:

    标签: asp.net vb.net image


    【解决方案1】:

    就个人而言,当用户删除其值时,我不会将此图像存储在数据库中。我会将列设置为空。写入图像时,我会检测列是否为空,然后读取文件并将其写入响应。如果您这样做,那么您不需要将任何内容累积到本地缓冲区中,您可以在读取每个缓冲区时将其写入响应。您可以使用 FileInfo.Length 来确定响应的内容长度。

    如果您坚持将图像放入数据库中,您还可以使用 FileInfo.Length 来确定保存图像所需的缓冲区大小。使用 BinaryReader 将此长度的字节读入缓冲区。然后缓冲区将成为 SQL 命令的参数。

    【讨论】:

    • 起初我以为我不能这样做,因为没有图片会产生全新的问题。但是一位同事随后展示了一个类似的想法,如何在数据库连接后立即替换源中的“NULL”文件,因此程序的其余部分认为一切都按预期工作。该程序最初根本不是为了处理丢失的图片而构建的。 ;) 谢谢你。
    【解决方案2】:

    this 可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      相关资源
      最近更新 更多