Можно ли записать двоичное изображение в базу данных, используя c # и пользовательский http-хандер? - PullRequest
1 голос
/ 31 января 2011

Мышление, стоящее за вопросом, состоит в том, что мое текущее изображение считывает данные из пользовательского http-обработчика, который получает изображение из базы данных. Я хочу иметь возможность использовать элемент управления загрузкой файлов, чтобы «отправить» файл замены обратно в обработчик «записи», обновляя базу данных. Затем я могу обновить свое изображение с помощью javascript до оригинального обработчика «read».

Возможно ли это?

Редактировать

Спасибо за ответы ниже, но я не думаю, что мне было достаточно ясно, если вопрос ...

В настоящее время у меня есть стандартный процесс загрузки модели обратной передачи, который помещает изображение в базу данных и пользовательский обработчик для его считывания. Что я хочу знать, так это то, что вы можете создать собственный обработчик http для выполнения загрузки, чтобы я мог асинхронно вызывать обработчик загрузки, а затем обновлять изображение src, чтобы извлечь его из базы данных.

В настоящее время я использую подход IFrame, чтобы он выглядел асинхронным, я просто хочу узнать лучшую практику действительно

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Да, это обычный случай использования.У Microsoft есть хорошее руководство здесь для создания обработчика выгрузки файлов.Из обработчика выгрузки файлов вы можете получить двоичный поток, который вы можете передать в команду SQL , которую вы можете использовать для UPDATE базы данных.Вы также захотите создать пользовательский HTTP-обработчик , который записывает что-то с правильным типом контента (например, image/jpeg).Когда у вас настроен обработчик HTTP, вы сможете получить к нему доступ через URL с его идентификатором (например, <img src="http://localhost/GetImage.ashx?id=123456" />), поэтому вы можете использовать JavaScript для его обновления.

Здесь отличный учебник по всему этому процессу.

0 голосов
/ 31 января 2011

Короче говоря да.

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

Затем, как только это будет выполнено, просто выполните SQL для обновления изображения в базе данных, затем, если этоПосле этого вы можете перезагрузить изображение на странице, используя свой ajax.

Единственные проблемы с этим, которые я мог видеть:

  • Сколько времени займет изображение, чтобы загрузить завещаниеэто будет проблемой для конечного пользователя?
  • Обработка случаев, когда что-то не получается и / или пользователь покидает страницу?

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

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