2009-10-31 3 views
1

У меня есть проект, в котором пользователь для компании будет использовать HTML-редактор winform для размещения некоторых текстов и изображений для конкретных клиентов. Клиенты будут просматривать эту информацию на веб-сайте.Где сохранить HTML и изображения?

Каков наилучший способ справиться с этим? Если бы это был строго текст HTML, я мог бы сохранить все в базе данных и не иметь никаких проблем с его отображением. Но работник хочет возможность показать фотографии ...


  1. ли я сохранить фотографии как файл в общественном месте, так что веб-сайт и программа WinForm могут увидеть его? Проблема здесь была бы , где - лучшее общественное место для хранения изображений. Веб-сервер будет заблокированным сервером без доступа. Могу ли я получить файл из не локального каталога из ASP.Net?

  2. Сохранить фотографии в базе данных и сделать программу достаточно умной, чтобы заменить исходные теги изображения на изображение из базы данных? Я думал, что это может получить трудно (определенно в Интернете ... если кто-то предполагает, что это, вы можете дать мне несколько примеров C# о том, как сделать это на WinForm и веб?)

Я знаю, что кто-то имел чтобы сделать это где-то и удалось ...

ответ

4

Я предложил бы использовать базу данных для хранения пути к локальному изображению (если это возможно на вашей установке)

EG физического изображение будет сохранено в пути, как следующее:

/App_Themes/Web/images/userfiles/YOURIMAGENAME.jpg 

и просто сохранить следующую информацию в базе данных

YOURIMAGENAME.jpg 

Это тогда будет означать, что вы могли бы иметь Somthing как следующее:

<asp:Image ID="imgImage" runat="sever" /> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Your data-access code here 

    //image.ImageName is provided by your data access code. 
    imgImage.ImageUrl = string.Format("/App_Themes/Web/images/userfiles/{0}", image.ImageName) 
} 
0
  1. Да, если вы не планируете ограничивать доступ к этим изображениям. Если вы это сделаете, сохраните их от www root и отправьте в браузер по сценарию.

  2. Нет. Лучше хранить изображения на диске и относительный путь к ним - в БД. База данных не является правильным местом для хранения файлов.

0

Пожалуйста, смотрите этот

Storing Images in DB - Yea or Nay?

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

  • количества изображений/файлов ожидаемых
  • возможности и соображения производительности конкретной базы данных, которые вы будете использовать, в отношении хранения капли
0

Вы можете легко сохранить изображения в базе данных, а затем получить их. Для отображения изображений из базы данных вы можете использовать страницу asp.net (см. Это article) или HttpHandler.

Вы также можете сохранить файлы в локальной папке. Можно использовать обычные операции чтения/записи. Для этого пользователю ASP.NET ([Local Machine] \ ASPNET или NETWORK SERVICE) нужен доступ для чтения/записи в эту папку. Для использования удаленной папки все больше tricky, и вы можете создать дыру в безопасности при попытке сделать это.

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

0

Если использование файловой системы невозможно, рекомендуется хранить изображения в облачном хранилище, например Amazon S3.

Вы можете сконфигурировать объекты S3 так, чтобы они были общедоступными, но конфиденциальными, так что только ваше программное обеспечение может добавлять изображения на S3, но каждый, кто в Интернете, может их просматривать. В зависимости от ваших требований безопасности вы можете закодировать секретные ключи S3 в своем приложении WinForms для создания URL-адреса PUT или создать простую веб-службу на сервере приложений, которая проверяет подлинность пользователя и использует секретные ключи на сервере для создания URL-адреса PUT. Затем URL-адрес PUT можно вернуть клиенту, который может использовать для загрузки данных изображения.

Используя S3, вы затем загрузите изображения с помощью HTTP PUT, и как редактор, так и веб-браузер будут обращаться к изображениям, как обычно, с помощью HTTP GET. Доступны библиотеки C# и множество примеров кода в Интернете для доступа к S3.

Вы также можете сделать то же самое с вашими данными HTML.

Обратите внимание, что расходы, связанные с S3 (see pricing), но при условии, что затраты находятся в пределах границ, это отличное решение для этого типа проблем.

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