2014-10-07 2 views
0

Я ищу для загрузки PDF из моей программы VB.Net на SQL Server. У меня есть код ниже.VB.net SQL Server Загрузить PDF

Файл, который мне нужно загрузить, должен войти в столбец uDoc, а путь к файлу (C: \ example.pdf) - это строка inDoc.

любые идеи о том, как заполнить мой код.

Благодаря Роб

Sub UploadInvoice() 
    Dim myConn As SqlConnection 
    Dim inAcc As String 
    Dim inType As String 
    Dim inDoc As String 


    inAcc = Form1.tb1Account.Text 
    inType = frmInv.cbType.Text 
    inDoc = frmInv.tbFile.Text 



    myConn = New SqlConnection(strConnection) 
    myConn.Open() 

    Dim mycmd As New SqlCommand 

    mycmd.CommandText = "INSERT INTO tblInvoice (UDate, AccNo, Type, UDoc) VALUES(GETDATE(),'" & inAcc & "','" & inType & "','" & inDoc & "')" 




    mycmd.Connection = myConn 
    mycmd.ExecuteNonQuery() 

    myConn.Close() 
End Sub 
+2

У вас есть широко открытая уязвимость в SQL-инъекции. Вы можете исправить это, используя «параметризованные запросы» вместо того, чтобы прямо конкатенировать такие строки. Это также поможет вам исправить вашу проблему, потому что тогда вы можете преобразовать двоичный файл в 'byte []' и назначить его параметру. Который будет * намного проще, чем положить 'byte []' непосредственно в строку запроса. – David

+0

Спасибо за отзыв о «параметризованных запросах», однако приложение используется только одним человеком в закрытой сети, но я буду считать это в середине в будущем. Как только я изменил его, как добавить файл байта? – Lickrob

+1

Это не меняет того факта, что оно уязвимо. И особенно это не изменяет тот факт, что он рекламирует небезопасную практику кодирования как «приемлемую», которая может нанести гораздо больший ущерб, чем это приложение. Также есть информация о том, как использовать параметризованные запросы - это точно, как делать то, что вы пытаетесь сделать ... Например, ответ здесь показывает, как использовать массив байтов в качестве параметра запроса: http://stackoverflow.com/ вопросы/4057748/сохранить байт-в-а-SQL-сервера базы данных из-с-диез – David

ответ

0

Если это приложение ASP.Net, используйте элемент управления FileUpload. Он выдает поле ввода файла в браузере, поэтому вы можете выбрать файл (или несколько, если используете .Net 4.5 и браузер, совместимый с HTML5). Вы не сможете получить полный путь к файлу, но это, как правило, не имеет значения, поскольку веб-приложение не имеет возможности читать файловую систему клиента. Сохраните загруженный файл в местоположение и сохраните его в db.

Смежные вопросы