Абсолютный путь в IMG SRC не отображает изображение

Я использую свой собственный сервер под управлением Windows Server 2008 и IIS v7.5. ОС находится на диске c: вместе с сайтом. У меня есть несколько фотографий и видео со связанными текстовыми файлами, которые в настоящее время также находятся на диске c: (см. упрощенную структуру ниже), которые я хочу переместить на больший диск d: на том же сервере.

OS(C:)
- inetpub
--- wwwroot
----- альбомы
------- index.html
------- xxx .php
------- etc
------- info
---------- textfile1.txt
------- --- textfile2.txt
---------- etc
------- photos
---------- photo1.jpg
---------- фото2.jpg
---------- и т.д.

В настоящее время я вывожу текстовые файлы и фотографии, используя цикл for в PHP, который упрощенно выглядит так:

включить 'info/textfile1.txt';
img src = 'photos/photo1.jpg' alt = "photo1.jpg" width="200px"

которые оба работают.

Перед перемещением файлов на диск d: я расширил их до абсолютных путей:

включите 'C:/inetpub/wwwroot/albums/info/textfile1.txt';
, который работает, и

img src = 'C:/inetpub/wwwroot/albums/photos/photo1.jpg' alt = "photo1.jpg" width="200px"

который не работает (просто отображает «альтернативный» текст).

Чтобы быть абсолютно ясным, все эти файлы находятся на сервере.

Итак,
1. Почему img src с полным путем не работает и как мне заставить его работать?
2. Есть ли какой-либо риск безопасности (или другой) при таком подходе?


person user3609500    schedule 06.05.2014    source источник


Ответы (1)


Это никогда не сработает
"img src" работает в браузере клиента, который не имеет доступа к структуре каталогов сервера и файлам в каталоге c:/inetpub/wwwroot.
Абсолютные пути в "img src" могут только "http://domain.com/folder/file.ext", вот так

person Oleg Dubas    schedule 06.05.2014
comment
Большое спасибо @Oleg Dubas, теперь я это понимаю, и ваш пример работает отлично. Моя настоящая проблема сейчас заключается в том, что я хочу отображать фотографии с моего большего диска d:, на который, я думаю, я не могу ссылаться, используя domain.com/folder/file.ext, поскольку он указывает на папки, расположенные ниже папки wwwroot на диске c:. Как бы я это сделал, если предположить, что это возможно? - person user3609500; 07.05.2014
comment
Это просто невозможно :) Единственный способ сделать это - написать серверный скрипт, который физически прочитает файл с диска D: (который доступен для этого скрипта) и выкинет его на вывод браузера. Это очень простой скрипт, например: ‹?php header('Content-Type: image/jpeg'); readfile('D:/photo.jpg'); ?› - person Oleg Dubas; 07.05.2014
comment
Великолепно! Большое спасибо @Oleg Dubas, теперь у меня это работает, используя структуру типа img src='load-image.php?$image.jpg' с проверками существования файла; header('Тип содержимого: изображение/jpeg'); readfile('D:/photo.jpg'); etc в файле load-image.php и отлично работает. - person user3609500; 10.05.2014
comment
Моя следующая задача будет заключаться в том, чтобы сделать то же самое для моих видеофайлов, надеюсь, используя ту же или подобную технику (?) ... но это в другой раз. (В моем предыдущем комментарии была опечатка - я имел в виду img src='load-image.php?image=$photo', но я уверен, что вы это знали). Еще раз спасибо. - person user3609500; 10.05.2014