Хранение и извлечение PDF-файла с помощью VB.NET и mysql DB longblob/varbinary
Всем Привет,
Я работаю над проектом для курса повышения квалификации, который я делаю в VB (прошло уже много времени с тех пор, как я прикасался к нему). Сфера применения такова VB.NET на базе информационной системы сотрудников с использованием базы данных MySQL.
Мне удалось выполнить все, кроме одного шага-сохранения файла (PDF) в БД MySQL и возможности загрузки файла. Такого я еще никогда не делал.
Это способ подключения к MySQL БД я использую повторно
Public Sub DBConnect() Dim DatabaseName As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SYSTEM\db", "4", Nothing) Dim server As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SYSTEM\db", "1", Nothing) Dim userName As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SYSTEM\db", "2", Nothing) Dim password As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SYSTEM\db", "3", Nothing) If Not sConnection Is Nothing Then sConnection.Close() sConnection.ConnectionString = String.Format("server={0}; user id={1}; password={2}; database={3}; pooling=false", server, userName, password, DatabaseName) Try sConnection.Open() Catch ex As Exception MsgBox(ex.Message) MsgBox("ERROR 1001") End Try End Sub
Вставка сведений о пользователе в БД
<pre> Public Sub InsertUser() DBConnect() Dim sqlQuery As String = "INSERT INTO db_table (firstname, surname, age, dept) VALUES('" & fname_box.Text & "','" & sname_box.Text & "','" & age_box.Text & "','" & dept_box.Text & "')" Dim sqlCommand As New MySqlCommand With sqlCommand .CommandText = sqlQuery .Connection = sConnection .ExecuteNonQuery() End With LoadUsers() End Sub
мой вопрос
Я ищу любые идеи/предложения, которые могут возникнуть у вас, чтобы загрузить PDF-документ в базу данных MySQL либо как часть вышеуказанного процесса (или) как отдельный процесс.
В проекте есть требование приложить подписанную форму согласия для пользователя в формате PDF, отсюда и требование.
По существу:
1. Найдите файл
2. Выберите Файл
3. загрузить или сохранить в MySQL LONGBLOB или VARBINARY
4. Возможность загрузки PDF-файла с помощью кнопки click.
Что я уже пробовал:
Я рассмотрел несколько различных решений на youtube и других веб-сайтах, но каждый раз, когда я пытаюсь использовать одно из них, я обычно сталкиваюсь с проблемами (в основном с тем, как я вызываю соединение с БД), которые потребуют еще одного часа, чтобы ввести и объяснить :) По сути, я просто ищу совета у кого-то, кто достиг этого ранее.
Заранее спасибо.
Jochen Arndt
Не решение вашего вопроса, а предложение:
Храните PDF-файл как обычные файлы в выделенном каталоге и храните путь к файлам в базе данных.
Это распространенный метод для больших двоичных данных, которые уже присутствуют в виде файлов (изображений, PDF).
Тогда обработка путей файла будет такой же, как и для любых других "нормальных" текстовых записей.
BoffinIE
Эй Йохен,
Спасибо за твой ответ, приятель. Если бы я только мог это сделать :)
Проект предусматривает, что мы должны сохранить его в БД MySQL, но да, я полностью согласен с вами, я рассматривал возможность использования WMI для создания DIR с помощью чего-то вроде (System.IO.Directory.Create ("\\server\$user\pdf")) и олицетворять с помощью NTCurrentUser, но, увы, это было бы слишком просто :D
Я думаю, они хотят, чтобы я сильно пострадал в этом проекте - но большое вам спасибо за предложение! Оцененный
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
BoffinIE
Привет Ричард,
Спасибо за совет - это абсолютно безумно... (да, я технический динозавр) - имеет смысл, я пойду исправлю это и, надеюсь, получу за это дополнительные очки :)