Это должно быть так просто, но я немного озадачен тем, как лучше всего подойти к этому.
Я строю плагин PHP, поэтому я не могу жестко закодировать любые пути. Мне также нужно учитывать протоколы http (http / https). Я использую GD Lib для создания и сохранения изображения. Моя структура каталогов выглядит так:
public_html > php_plugin > php_classes > php_class.php
public_html > php_plugin > saved_images
Плагин установлен в public_html
, Я запускаю код для сохранения изображения в php_class.php
, Здесь я сохраняю изображение так: '../saved_images/imagename.jpg'
, Это отлично работает, и изображение сохраняется в правильном каталоге.
Затем я возвращаю этот путь через AJAX для отображения изображения. И, очевидно, этот путь не удается разрешить, и я получаю неработающую ссылку на изображение: http://www.website.com/saved_images/imagename.jpg
Это должно выглядеть так: http://www.website.com/php_plugin/saved_images/imagename.jpg
Итак, в моем классе PHP, где я установил путь сохранения, как мне создать путь, который я могу вернуть с помощью AJAX, имея в виду, что это плагин и может использоваться на многих разных сайтах.
РЕДАКТИРОВАТЬ:
Для записи я знаю, что могу использовать $_SERVER['SERVER_NAME']
а также $_SERVER['SERVER_PROTOCOL']
но на основе этих вопросов (PHP $ _SERVER [‘HTTP_HOST’] против $ _SERVER [‘SERVER_NAME’], правильно ли я понимаю справочные страницы? а также PHP Получить протокол URL сайта — http против https) Я думаю, что такой подход будет весьма ненадежным, так как настройки сервера, на которых будет размещаться плагин, будут неизвестны.
Вы объединяете два разных типа пути; путь к файловой системе сервера и путь URL. В вашем случае они похожи, но в зависимости от конфигурации сервера они могут сильно отличаться.
Поскольку вы пишете, что возвращаете путь к изображению через AJAX, вероятно, ваш AJAX-код должен знать URL-адрес сценария PHP, чтобы его можно было вызвать (что-то вроде http://example.com/php_plugin/index.php
?). В этом случае вы можете просто заставить PHP возвращать только имя файла и указывать оставшуюся часть пути в вашем javascript.
Других решений пока нет …