2009-06-11 4 views
4

Как бы сохранить документ PDF в поле в mysql?хранить pdf в mysql

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

Я рассмотрел возможность размещения PDF-файлов в папке и сохранение их местоположения как varchar в записи клиента, но если PDF-файлы будут перемещены/удалены/и т.д. то мы за ручьем.

Я понимаю, что blob или mediumblob - это тип поля, который я бы использовал для его хранения, но я немного невежественен в этом отношении. Я не уверен, как хранить что-то вроде этого в поле (какой тип C# для его передачи), а затем как его получить и открыть с помощью PDF-ридера.

+0

Почему PDF-файлы уязвимы для удаления/перемещения? –

+0

любая удача? Если у вас есть вопросы, не стесняйтесь спросить. –

+0

@ dcaunt: Прием имеет доступ к общей папке, на которой они находятся на сервере, и это невозможно изменить. У стойки регистрации также есть умение заниматься музыкой. –

ответ

4

Поместите его в базу данных, но блоб тип данных, вероятно, не резать. Среднее значение обычно достаточное.

Mysql Datatypes

BLOB, TEXT    L + 2 bytes, where L < 216 
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 224 
LONGBLOB, LONGTEXT  L + 4 bytes, where L < 232 

Я использовал это несколько раз с очень хорошими результатами. Обязательно сохраните размер файла, так как он упрощает его извлечение. Не уверен, что это относится к C#, как к PHP.

При использовании подготовленных операторов с параметрами данные будут автоматически удалены AFAIK.

Также я не вижу реальной причины, почему сама база данных будет медленной при хранении в ней данных такого типа. Главным узким местом будет передача данных. Также mysql иногда ограничивает максимальную длину запросов и ответов в частности.

После того, как вы его запустили, это довольно аккуратно, особенно при работе с большим количеством небольших файлов. Для небольшого количества больших файлов этот подход не имеет смысла, лучше использовать некоторую систему резервного копирования для обработки перемещенных/удаленных файлов.

+0

Это на самом деле то, что я делал. Сейчас он работает уже пару месяцев, и он работает хорошо. Я ДОЛЖЕН увеличивать размер пакета для mysql, иначе восстановление с дампов будет дерьмо, как только они попадут в эту таблицу. Мне не нужно было хранить длину файла, я просто удаляю байты в папку temp windows, используя temp filename и открываю файл. –

+0

Да, файл для работы напрямую через HTTP, где мне не удалось получить правильный размер из данных в памяти. –

-2

Я считал, помещая файлы PDF в папку и хранить их местоположение в качестве VARCHAR в записи клиента, но , если PDF-файлы перемещаются/удалены/и т.д.. , тогда мы за ручьем.

Это подход, который я бы взял. Затем, используя некоторую логику, возможно, некоторый тип типа BPEL - обнаруживает, что какой-либо из файлов перемещает/удаляет и запускает триггер в вашу БД, чтобы правильно обновить местоположение или удалить местоположение.

0

Честно говоря, я думаю, что переход со ссылками вместо фактически вставка файла в базу данных - лучший способ. Это сделает базу данных очень медленной и будет больше проблем, чем ее ценность.

Я бы загрузил файлы в указанную папку, например «сертификаты», и сделал имена сертификатов отправлен с номером клиента, поэтому их легко найти и отредактировать, удалить и т. Д. Я видел, как люди хранят изображения в базах данных, но даже это не рекомендуется.

Если метод вы хотите, безусловно, необходимо, проверить эту статью:

http://www.wellho.net/mouth/1001_-pdf-files-upload-via-PHP-store-in-MySQL-retrieve.html

Это объясняет, как хранить и извлекать файлы .pdf в базе данных MySql.

Удачи!

+0

Неопроверенный факт, что обслуживание PDF-файлов из базы данных будет, как правило, медленнее, чем просто сохранение пути и обслуживание с диска. –

+0

+1 Может быть гораздо проще хранить его в файловой системе и хранить в нем ссылку в db, но целостность данных ужасна, а резервные копии имеют больше шансов ошибиться. : Я посмотрел на эту статью, и там есть хорошие вещи. Мне просто нужно выяснить, как заставить мой ОРМ работать так, как он мне нужен. –

+0

Я бы сказал, что он также зависит от инфраструктуры и реализации. О, а иногда и быстрее, это не всегда самое лучшее. –

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