Вывод изображения в другой каталог с помощью PHP

#php #html #image #png

#php #HTML #изображение #png

Вопрос:

У меня есть изображение PNG, расположенное за пределами public_html. Я хочу поместить это изображение в <img> тег. Кто-нибудь знает, как это сделать с помощью php?

Комментарии:

1. Упс. Я имел в виду тег < img > .

2. Это невозможно напрямую. Вам либо нужно использовать .htaccess правило для внутреннего направления URL-адреса, либо использовать PHP-файл для чтения содержимого файла и его эхо.

Ответ №1:

У вас может быть посредник, который выводит изображение, отправляя правильные заголовки:

 <?php

$path = '/some/sanizied/path.png';

header( 'Content-Type: image/png' );
// other headers like Length are nice, too.
readfile( $path );
 

Существуют также заголовки X-Sendfile и X-Accel-Redirect, которые могут указывать вашему веб-серверу доставить другой файл. Это устраняет некоторые накладные расходы PHP.

Комментарии:

1. Прохладный. Просто примите некоторые меры предосторожности, если вы позволяете пользователю указывать путь в URI. Например, запустите realpath() по предполагаемому пути и убедитесь, что результат находится внутри ожидаемого каталога.

Ответ №2:

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

Если файл изображения png находится в другом расположении файла / каталога, ваш код может выглядеть примерно так.

 <img src='../file2/happy.png' alt='happy' />
 

Вышеописанное поднимется на уровень каталога, затем перейдите в папку «file2» и укажите там на файл изображения happy.png.

Ничего общего с php, когда дело доходит до указания местоположения каталога файла изображения, если только вы не пытаетесь динамически создавать местоположение, которое регулярно меняется.

Комментарии:

1. Все файлы public_html доступны через корень веб-сайта. ../../../../ в корне веб-сайта указывает на корень, который является тем же public_html каталогом.

2. Это не сработает, потому что папка не находится в public_html.