Rahul Chand Ответов: 1

Как восстановить pdf-файл, сохраненный в виде двоичных данных в базе данных, и просмотреть этот файл в веб-элементах управления с помощью VB.NET


я пробовал этот код но он не работает Может ли кто нибудь помочь мне с этим кодом

Что я уже пробовал:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click



       myconnection = New SqlConnection("SELECT Data FROM [pdf] WHERE id = " & TextBox1.Text & "")


       Using con As New SqlConnection("Data Source=(localdb)\Projects;Initial Catalog=pdf;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False")
           con.Open()
           Using com As New SqlCommand("SELECT Data FROM [pdf] WHERE id = " & TextBox1.Text & "", con)
               Using reader As SqlDataReader = com.ExecuteReader()
                   While reader.Read()
                       Dim fileData As Byte() = DirectCast(reader("Data"), Byte())

                   End While
               End Using
           End Using
       End Using



       WebBrowser1.Navigate(filedata)
   End Sub

Richard Deeming

Using com As New SqlCommand("SELECT Data FROM [pdf] WHERE id = " & TextBox1.Text & "", con)

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

1 Ответов

Рейтинг:
2

Sandeep Mewara

Вы не поделились ни одной проблемой со своим кодом (не работает, не дает нам ни малейшего представления о том, с какой проблемой вы столкнулись). Глядя на ваш код, я не вижу, где вы определяете ContentType двоичных данных при извлечении.


Обратитесь к следующей статье для этого: Преобразование двоичных данных в PDF-файл на языке C# и VB.Net[^]

VB.NET фрагмент кода:

Using con As New SqlConnection(constr)
    Using cmd As New SqlCommand()
        cmd.CommandText = "SELECT Name, Data, ContentType FROM tblFiles WHERE Id=@Id"
        cmd.Parameters.AddWithValue("@Id", id)
        cmd.Connection = con
        con.Open()
        Using sdr As SqlDataReader = cmd.ExecuteReader()
            sdr.Read()
            bytes = DirectCast(sdr("Data"), Byte())
            contentType = sdr("ContentType").ToString()
            fileName = sdr("Name").ToString()
        End Using
        con.Close()
    End Using
End Using

Попробуйте.