Добавить изображения в DataSet - VB. Net SOAP Веб-сервис - PullRequest
0 голосов
/ 10 февраля 2020

Модифицируя старую программу, она сохраняла изображения (.TIF) в базе данных, из-за увеличения размеров файлов. Я пытаюсь извлечь изображения из общей папки, а не сохранять их в базе данных в дальнейшем. Я сделал тестовый фрагмент кода только для типов файлов .TIF, но изображения не отправляются обратно в набор данных. Я пытаюсь изменить веб-службу SOAP, чтобы это изменение не затронуло клиентов, использующих программное обеспечение. Вот что у меня есть:

<WebMethod()> Public Function GetSerialNumbers() As DataSet

    Dim daSerialNumbers As New SqlDataAdapter("SELECT  Order_No, Serial_Range, Serial_Numbers, Pages, Notes,SequenceId  FROM SerialNumbers where   Order_No like  '" & SN & "' ORDER BY Order_No, Pages", cnSerialNumbers)
    Dim dsSerialNumbers As New DataSet

    daSerialNumbers.Fill(dsSerialNumbers, "SerialNumbers")

    For i = 0 To dsSerialNumbers.Tables("SerialNumbers").Rows.Count - 1
        If dsSerialNumbers.Tables("SerialNumbers").Rows(i).Item("Pages").ToString.Contains(".TIF") Then
            Dim newImage As System.Drawing.Image = Drawing.Image.FromFile("C:\temp\660-50369.tif")
            dsSerialNumbers.Tables("SerialNumbers").Rows(i).Item("Contents").value = ImageToPictureArray(newImage)
        End If
    Next

    Return dsSerialNumbers
End Function


Public Function ImageToPictureArray(ByVal picImage As System.Drawing.Image) As Byte()
    Dim ms As New MemoryStream
    picImage.Save(ms, picImage.RawFormat)
    Dim arrImage() As Byte = ms.GetBuffer
    ms.Close()
    Return arrImage
End Function

Это старый код, который намного проще загрузить из базы данных sql ...

<WebMethod()> Public Function GetSerialNumbers() As DataSet
    Dim daSerialNumbers As New SqlDataAdapter("SELECT  Order_No, Serial_Range, Serial_Numbers, Pages, Notes, Contents,SequenceId  FROM SerialNumbers3 where   Order_No like  '" & SN & "' ORDER BY Order_No, Pages", cnSerialNumbers)
    Dim dsSerialNumbers As New DataSet
    daSerialNumbers.Fill(dsSerialNumbers, "SerialNumbers")
    Return dsSerialNumbers
End Function
...