Как отобразить изображение, расположенное на другом сервере в сети (ASP.NET) - PullRequest
1 голос
/ 13 апреля 2010

У меня есть сайт ASP.NET, расположенный на локальном сервере (MY_SERVER). И одна из вещей, которые он делает, это подтягивает файлы tiff, которые расположены на другом сервере (ANOTHER_SERVER). Расположение каждого из этих файлов хранится в SQL. Я поднимаю каждое из этих изображений и должен их отобразить. Проблема:

  1. файлы не имеют имен с расширением tiff (это имеет значение?)

  2. они вообще не отображаются.

Я использую элемент управления изображением для отображения этих изображений, и я не уверен, имеет ли значение, что расширение не установлено (знает ли элемент управления изображением разницу между jpg и tiff без расширения?)

Я предполагаю, что изображения не отображаются, потому что они не находятся на том же сервере MY_SERVER, где находятся изображения (ANOTHER_SERVER). Есть идеи как это исправить?

edit: на самом деле отображение файлов TIFF было удивительно простым:

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = "image/png";
    new Bitmap(Request.QueryString["ImagePath"]).Save(Response.OutputStream, ImageFormat.Gif);

}

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

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010
  1. Независимо от того, какой тег вы используете, ANOTHER_SERVER хранит изображения в доступном из Интернета месте?Если нет, вы не можете обслуживать их напрямую в Интернете.Вы можете попробовать загрузить файл с помощью Response.WriteFile.
  2. . Тег <img /> не предназначен для обслуживания файлов TIFF.Плагин QuickTime является бесплатным средством просмотра TIFF, но он не очень гибкий.Там, где я работаю, мы используем dotImage Atalasoft, который на лету преобразует TIFF в плиточный PNG, но он не бесплатный.Я нашел эту статью CodeProject .Даже если вы можете преобразовать изображение в дружественный веб-формат, вашему серверному коду, возможно, придется кэшировать файл на веб-сервере.
1 голос
/ 13 апреля 2010

Доступны ли изображения на ANOTHER_SERVER через HTTP или вы пытаетесь отобразить их в теге img, используя их путь UNC?

Поскольку веб-страницы просматриваются на клиентских компьютерах, пути к ресурсам (изображения / css / scripts и т. Д.) Должны быть доступны с клиентского компьютера. Даже если они доступны с сервера, если они недоступны с клиента, они не будут доступны для просмотра.

Я подозреваю, что в этом случае MY_SERVER может получить доступ к ссылкам на ANOTHER_SERVER, однако путь к ANOTHER_SERVER ничего не значит для клиента, обращающегося к странице.

Вам нужно будет либо прочитать изображение с диска и отобразить его как изображение с помощью обработчика клиента, либо выставить изображения на ANOTHER_SERVER через HTTP и ссылаться на них таким образом (что означает, что клиент должен иметь возможность прямого подключения ANOTHER_SERVER).

1 голос
/ 13 апреля 2010

Вы должны иметь возможность отображать изображение с другого сервера, если ваш тег img src правильно настроен и сервер доступен. Однако я не верю, что большинство браузеров поддерживают прямой просмотр файлов TIFF. Доступно несколько программ просмотра tiff ( google it ).

Вы также можете попробовать тег <embed> и посмотреть, справится ли он с задачей ( посмотрите здесь ). Компьютер пользователя должен был бы знать, как обращаться с размолвками.

...