../ путь к изображению - PullRequest
0 голосов
/ 18 июля 2009

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

У кого-нибудь есть идея?

Ответы [ 6 ]

6 голосов
/ 18 июля 2009

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

Переконфигурировать сервер ...

Если вы используете Apache, вы можете использовать Alias ​​ для сопоставления каталога в вашей файловой системе с корнем документа:

Alias /foo "/path/to/my/foo"

... или написать сценарий ретрансляции

План Б состоит в том, чтобы написать скрипт для извлечения файлов. Например, вместо попытки что-то вроде

 <img src="/../foo/bar.gif">

Вы могли бы сделать это

 <img src="/getimage.php?name=bar.gif">

Простая реализация getimage.php может выглядеть примерно так

//get the passed filename
$file=$_GET['name'];

//basic security check - ensure the filename is something likely
if (preg_match('/^[a-z]+\.gif+$/', $file))
{
    //build path and check it exists
    $path=$_SERVER['DOCUMENT_ROOT'].'/../foo/'.$file;
    if (file_exists($path))
    {
         //return file here. A production quality implementation would
         //return suitable headers to enable caching and handle
         //If-Modified-Since and etags...

         header("Content-Type: image/gif");
         header("Content-Length:".filesize($path));
         readfile($path);
    }
    else
    {
          header("HTTP/1.0 404 Not found");
          echo "Image not found";
    }

}
else
{
    header("HTTP/1.0 400 Bad Request");
    echo "Naughty naughty";
}
3 голосов
/ 18 июля 2009

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

2 голосов
/ 18 июля 2009

Вы не можете ссылаться на ресурсы вне корневого каталога вашего веб-сервера. Но вы можете определить псевдоним для этой папки:

Alias /images "C:/Users/Horst/Documents and Settings/My Images/"
1 голос
/ 18 июля 2009

Stand HTML не может получить доступ к файлам за пределами корневого веб-каталога (из соображений безопасности). Лучше всего для этого использовать язык программирования для написания какого-либо обработчика, который читает файл и затем передает его в выходной поток. Например, в ASP.NET вы можете написать обработчик .ASHX .

0 голосов
/ 19 февраля 2014

Вы пытались заключить путь в строку? например

cd "C:\Documents and Settings\foo\bar\"
0 голосов
/ 18 июля 2009

В URL используйте символ «+» для обозначения пробелов.

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