сохранить PDF в MySQL - PullRequest
       42

сохранить PDF в MySQL

4 голосов
/ 12 июня 2009

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 09 ноября 2009

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

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 иногда ограничивает максимальную длину запросов и, в частности, ответов.

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

1 голос
/ 12 июня 2009

http://www.phpriot.com/articles/images-in-mysql - хороший учебник с некоторой справочной информацией и реализацией хранения изображений в MySQL

0 голосов
/ 12 июня 2009

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

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

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

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

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

Удачи!

0 голосов
/ 12 июня 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...