delfinn
@delfinn
Начинающий PHP

Как правильно получать путь к файлу на сервере по url?

Здравствуйте!

Использовал библиотеку PhpSpreadsheet в WordPress для формирования отчета с выгрузкой изображений в Excel. Библиотека при работе с изображениями в методе setPath() с помощью функции PHP file_exists() проверяет наличие картинки и загружает в Excel.

/**
     * Set Path.
     *
     * @param string $pValue File path
     * @param bool $pVerifyFile Verify file
     *
     * @throws PhpSpreadsheetException
     *
     * @return Drawing
     */
    public function setPath($pValue, $pVerifyFile = true)
    {
        if ($pVerifyFile) {
            if (file_exists($pValue)) {
                $this->path = $pValue;

                if ($this->width == 0 && $this->height == 0) {
                    // Get width/height
                    list($this->width, $this->height) = getimagesize($pValue);
                }
            } else {
                throw new PhpSpreadsheetException("File $pValue not found!");
            }
        } else {
            $this->path = $pValue;
        }

        return $this;
    }


Для получения адреса картинки использовал get_the_post_thumbnail_url(). Возвращает URL изображения записи.

$thumbnail_url = get_the_post_thumbnail_url($post_id); // "https://site.com/wp-content/uploads/2021/02/image.jpg"


Но функция file_exists() работает с путем в ОС сервера, а не URL. Поэтому для преобразования пути использовал следующий код:

$thumbnail_url = str_replace($_SERVER['HTTP_ORIGIN'], $_SERVER['DOCUMENT_ROOT'], $thumbnail_url);


Заработало, но есть ощущение, что должно быть тривиальное решение для такого преобразования. Как бы вы получили серверный путь к файлу?
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
@Kotmail
Возможно, Вам поможет функция get_attached_file, возвращающая абсолютный путь к вложению по его ID.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы