【问题标题】:Copy image file in a path to SQL Server (using Asp.net, vb.net)将图像文件复制到 SQL Server 的路径中(使用 Asp.net、vb.net)
【发布时间】:2015-05-01 02:09:57
【问题描述】:

我对asp.net 编程非常陌生。我有一个 Excel 工作簿,其中包含图像文件的位置,例如C 列中的C:\Users\Suresh\Desktop\DWG\images (0).jpg(C 列中有超过 50 个图像路径)。

我正在寻找一种从上述路径复制这些图像文件并将它们存储在 SQL Server 数据库表中的方法。

请帮我解决这个问题。

提前致谢, 苏雷什。

在这里重新发布我的问题..请任何人帮助我..

我创建了一个sub,它接收excel单元格内容,它提取所有图像路径和图像ID,包含在传递的字符串中,分别存储在imgPath,imgID等变量中,然后插入到数据库中。我试图将图像路径分配给 image2.ImageUrl 属性,但不知道如何将其转换并保存到数据库中。

(图片路径和图片id位于传递字符串中的#IMGSTART”和“#IMGEND#”标签之间)

我的数据库字段是这样定义的

[RowID] INT IDENTITY (1, 1) NOT NULL,

[ProjectID] VARCHAR (50) 非空,

[ImageID] VARCHAR (50) NULL,

[图像] VARBINARY (MAX) NULL

Private Sub ExtractImgLinks_SaveToDB(qStr As String)

Dim Pos As Integer = InStr(1, qStr.ToUpper(), "#IMGSTART")
Dim tmpStr As String = Mid(qStr, Pos, (qStr.Length() - Pos))
Dim Conn1 As New SqlConnection(ConfigurationManager.ConnectionStrings("CreateUserConnectionString").ConnectionString)
Conn1.Open()
Do While Pos > 0
    Dim imgID As String = Mid(tmpStr, 10, 3)
    Dim imgPath As String = Mid(tmpStr, 14, (InStr(1, tmpStr.ToUpper(), "#IMGEND#") - 14))

    Image2.ImageUrl = imgPath

    ### need help here to convert image to VARBINARY ###

    'insert image to database
    Dim QryInsertStr As String = "insert into tbl_Result_Images (ProjectID, ImageID, Image) " & _
                                "values (@ProjectID, @ImageID, @Image)"
    Dim com As New SqlCommand(QryInsertStr, Conn1)
    com.Parameters.AddWithValue("@ProjectID", Session("ProjID").ToString())
    com.Parameters.AddWithValue("@ImageID", imgID)
    com.Parameters.AddWithValue("@Image", ????)
    com.ExecuteNonQuery()
    tmpStr = Right(tmpStr, Len(tmpStr) - (InStr(1, tmpStr.ToUpper(), "#IMGEND#") + 8))
    Pos = InStr(1, tmpStr.ToUpper(), "#IMGSTART")
Loop
Conn1.Close()

结束子

请给我一个解决方案。谢谢苏雷什。

【问题讨论】:

  • 我在下面的答案空间中给出了我的代码。请通过它并帮助我..感谢您的时间。

标签: asp.net sql-server vb.net image path


【解决方案1】:

像这样试试。

Using con As New SqlConnection(strConnect)
con.Open()
Using com As New SqlCommand("INSERT INTO myTable (imagePath) VALUES (@IM)", con)
    com.Parameters.AddWithValue("@IM", "C:\My Images\the name of the image.jpg")
    com.ExecuteNonQuery()
End Using
End Using

【讨论】:

  • 感谢您的建议。我需要从 excel 文件中提到的位置而不是路径中存储实际的图像文件。该路径指的是我的硬盘驱动器中的实际文件位置。我如何使用已知路径(如“C:\My Images\the name of the image.jpg”)直接从硬盘驱动器保存文件,而不是使用文件上传控件。我感谢任何解决此问题的线索。
【解决方案2】:

为每张图片尝试:

  • 从电子表格中读取文件位置。
  • 将图像从该位置加载到图像或位图对象中。
  • 将对象转换为 Base64 (ImageToBase64(pImage))。
  • 将 Base64 对象保存到数据库表中。

如果您需要知道如何做这些,请询问...

举个例子:

Dim Conn1 As New SqlConnection(ConfigurationManager.ConnectionStrings("CreateUserConnectionString").ConnectionString)

    Dim imgID As Integer = 1
    Dim imagePath As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "MyImage.bmp")

    Dim imageFile As New IO.FileStream(imagePath, IO.FileMode.Open)
    Dim imageSize As Integer = CInt(imageFile.Length)
    Dim imageByteArray(imageSize - 1) As Byte
    imageFile.Read(imageByteArray, 0, imageSize)

    'Insert image into database
    Dim QryInsertStr As String = "INSERT INTO ImageTable (Id, ImageColumn) VALUES (@IdData, @ImageData)"
    Conn1.Open()
    Dim com As New SqlCommand(QryInsertStr, Conn1)
    com.Parameters.AddWithValue("@IdData", imgID)
    com.Parameters.AddWithValue("@ImageData", imageByteArray)
    com.ExecuteNonQuery()
    Conn1.Close()

然后重复所有图像数据。

【讨论】:

  • 我需要更多关于你的逻辑的解释。我的图像数据类型是 sql 数据库中的 VARBINARY(MAX)。我在下面的答案空间中给出了我的代码,请你看一下。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 2012-09-11
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
相关资源
最近更新 更多