Загрузка файла и чтение из базы данных - PullRequest
0 голосов
/ 15 марта 2011

Я использую механизм загрузки файлов для загрузки файла для сотрудника, преобразования его в байт [] и передачи его в varBinary (Max) для сохранения в базе данных.

Теперь я должен сделать следующее: если какой-либо файл уже загружен для сотрудника, просто прочитайте его из таблицы и покажите имя файла. У меня есть только один столбец для хранения файла, который имеет тип VarBinary.

Можно ли получить всю информацию о файле из поля VarBinary?

Любой другой способ, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Если вы не сохраняете имя файла, вы не сможете его восстановить.

(Если только сам файл не содержит своего имени файла, в этом случае вам потребуется проанализировать содержимое BLOB-объекта.)

0 голосов
/ 15 марта 2011

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

Старайтесь не использовать имя файла длявнутренняя идентификация системы.Это нормально для того, чтобы пользователи могли искать файл по имени, выбирать его и т. Д. Но при фактическом обращении к серверу с просьбой отобразить файл лучше использовать простой целочисленный первичный ключ из таблицы, чтобы фактически идентифицировать его.(Следует отметить, что, возможно, хорошей идеей будет наложение уникального ограничения на столбец имени файла.)

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

Этот ресурс будет иметьнет пользовательского интерфейса (удалите все из .aspx, за исключением директивы Page) и будет вручную манипулировать заголовками ответа (именно здесь вы можете установить тип содержимого из типа файла), записать поток байтов клиенту и завершить ответ,С точки зрения клиента, что-то вроде ~/MyContent/MyFile.aspx?fileID=123 будет быть файлом.(Вы можете предложить имя файла браузеру для сохранения целей в заголовках ответов, что вы, вероятно, захотите сделать с сохраненным именем файла.)

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

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