Скачать PDF файл из БД на локальный сервер для скачивания - PullRequest
0 голосов
/ 20 апреля 2011

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

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

С точки зрения подачи файла через Интернет процесс точно такой же для изображений, как и для любого типа файла. Единственным отличием будет тип контента в заголовке ответа. (Для PDF это будет application/pdf.)

Поймите, что в HTTP нет абсолютно никакого понятия "файлы". Все, что у вас есть, это запросы и ответы, каждый из которых имеет заголовки и данные. Будь то изображение, PDF, веб-страница, что угодно ... структура ответа, доставляемого клиенту (браузеру), абсолютно одинакова. Заголовки сообщают браузеру, что это за данные, а также различные другие мета-данные о них, и эти данные являются просто необработанными данными отправляемого «файла». Браузер может выбрать, что делать с данными.

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

Редактировать: В ответ на ваш комментарий к ответу @Pete M ...

Процесс все еще очень похож. «Файлы» в качестве вложений электронной почты работают почти так же, как «файлы» по HTTP. По сути, все, что вам нужно, это поток данных и тип контента. При создании объекта MailMessage обратите внимание на объект Attachment. При извлечении файла PDF из базы данных (как при извлечении изображений из базы данных для предоставления клиенту браузера) установите для потока данных значение ContentStream на объекте вложения. Затем также установите ContentType (снова application/pdf) и Name на объекте вложения, и вы сможете отправить его как часть MailMessage.

Возможно, вам также потребуется установить дополнительные параметры на Attachment. Тестирование покажет, насколько явно вы должны быть с такими вещами, как кодирование. Если вы можете поделиться каким-либо кодом при попытке сделать это, мы можем помочь вам с этим кодом.

0 голосов
/ 20 апреля 2011

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

Могу я спросить, почему вы это делаете? Если это для кеширования, чтобы вы могли вернуть его пользователям, которые просят об этом, я бы сначала рассмотрел другие варианты. Требование погружения в диск часто приводит к снижению производительности.

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