|
|
|
| добрый день.непонятка маленькая.через gd вывожу изображение.выводится без проблем,предусмотрел все ситуации.но!если нажать правой кнопкой мыши на "сохранить файл",то сохраняет все изображения с именем imgfull.php,т.е. так,как зовут файл выводящий изображение.как заставить скрипт выводить файл с уникальным именем?
скрипт вывода.путь к файлу и имя файла передаётся в $file
<?
$ext=pathinfo($file);
if ($ext['extension']=='png')
{
$source = imagecreatefrompng($file);
header("content-type:image/png");
imagepng($source);
imagedestroy($source);
}
elseif ($ext['extension']=='PNG')
{
$source = imagecreatefrompng($file);
header("content-type:image/png");
imagepng($source);
imagedestroy($source);
}
elseif ($ext['extension']=='gif')
{
$source = imagecreatefromgif($file);
header("content-type:image/gif");
imagegif($source);
imagedestroy($source);
}
elseif ($ext['extension']=='GIF')
{
$source = imagecreatefromgif($file);
header("content-type:image/gif");
imagegif($source);
imagedestroy($source);
}
elseif ($ext['extension']=='jpg')
{
$source = imagecreatefromjpeg($file);
header("content-type:image/jpeg");
imagejpeg($source);
imagedestroy($source);
}
elseif ($ext['extension']=='JPG')
{
$source = imagecreatefromjpeg($file);
header("content-type:image/jpeg");
imagejpeg($source);
imagedestroy($source);
}
elseif ($ext['extension']=='jpeg')
{
$source = imagecreatefromjpeg($file);
header("content-type:image/jpeg");
imagejpeg($source);
imagedestroy($source);
}
elseif ($ext['extension']=='JPEG')
{
$source = imagecreatefromjpeg($file);
header("content-type:image/jpeg");
imagejpeg($source);
imagedestroy($source);
}
?>
|
файл со ссылкой:
$adr=$directory."/".$value;
$adr=UrlEncode($adr);
echo "<a href=imgfull.php?file=$adr target=_blank>";
|
просто использовать <img src> не могу т.к. имена файлов в основном такие: Павлюченко 1.2.jpg ,т.е. используется русский текст с пробелами,цифрами и точками.
обычный <img src> не выводит такое даже после UrlEncode.
пожалуйста помогите.спасибо. | |
|
|
|
|
|
|
|
для: sanitar
(11.08.2008 в 18:54)
| | Можете передать такой же заголовок, который используется при отдачи скриптом файла пользователю, например:
<?
//точка после 1 заменена, так как IE, например, вместо нее
//обязательно поставит так 1[1]2.jpg
$f = 'Павлюченко 1-2.jpg';
$source = imagecreatefromjpeg('rand.jpg');
header("Content-Disposition: attachment; filename= $f");
header("content-type:image/jpeg");
.....
|
Сохранение будет предлагаться под именем $f. | |
|
|
|
|
|
|
|
для: sim5
(11.08.2008 в 19:53)
| | файлы будут иметь имя в той структуре как я указал,т.е. с точкой,и начальство тоже захочет в конечном файле при сохранении иметь точку в имени.... | |
|
|
|
|
|
|
|
для: sim5
(11.08.2008 в 19:53)
| | какой же блин аттачмент, когда инлайн?
И таки надо указывать имя в content-type | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 21:18)
| | а не так?
Content-Disposition: file; filename=$file
|
| |
|
|
|
|
|
|
|
для: sanitar
(12.08.2008 в 00:44)
| | Вы сказали, что у Вас <img src=...>
Следовательно inline. | |
|
|
|
|
|
|
|
для: Trianon
(12.08.2008 в 00:48)
| | я сказал что <img src=...> не выводит | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 21:18)
| | Так вот такой, когда копируешь и не проверяешь :)
Я вообще пишу так:
Content-Disposition: file;..., хотя правильнее видимо inline. | |
|
|
|
|
|
|
|
для: sim5
(12.08.2008 в 09:49)
| | передаем
$adr=$directory."/".$value;
$adr=UrlEncode($adr);
$value2=UrlEncode($value);
<a href=imgfull.php?file=$adr&name=$value2 target=_blank>1</a>
|
принимаем и выводим
<?
$ext=pathinfo($file);
$name=UrlDecode($name);
if ($ext['extension']=='png')
{
$fp = fopen($file, 'rb');
header("content-type:image/png");
fpassthru($fp);
exit;
}
elseif ($ext['extension']=='PNG')
{
$fp = fopen($file, 'rb');
header("content-type:image/png");
fpassthru($fp);
exit;
}
elseif ($ext['extension']=='gif')
{
$fp = fopen($file, 'rb');
header("content-type:image/gif");
fpassthru($fp);
exit;
}
elseif ($ext['extension']=='GIF')
{
$fp = fopen($file, 'rb');
header("content-type:image/gif");
fpassthru($fp);
exit;
}
elseif ($ext['extension']=='jpg')
{
$fp = fopen($file, 'rb');
header("Content-Disposition: inline; filename= $name");
header("content-type:image/jpeg");
fpassthru($fp);
exit;
}
elseif ($ext['extension']=='JPG')
{
$fp = fopen($file, 'rb');
header("Content-Disposition: inline; filename= $name");
header("content-type:image/jpeg");
fpassthru($fp);
exit;
}
elseif ($ext['extension']=='jpeg')
{
$fp = fopen($file, 'rb');
header("content-type:image/jpeg");
fpassthru($fp);
exit;
}
elseif ($ext['extension']=='JPEG')
{
$fp = fopen($file, 'rb');
header("content-type:image/jpeg");
fpassthru($fp);
exit;
}
?>
|
почему при этом при сохранении в ИЕ файл с нормальным именем сохраняется,а в опере с таким: ���������� 2.1.JPG
?????????????????
зы:вообще там должны быть квадраты.форум перекодировал их.ну суть не сильно меняется. | |
|
|
|
|
|
|
|
для: sanitar
(13.08.2008 в 18:30)
| |
<?
$f = "Павлюченко 1.2.jpg";
$f = iconv("windows-1251","UTF-8",$f);
$source = imagecreatefromjpeg('image.jpg');
header("Content-Disposition: inline; filename= $f");
header("content-type:image/jpeg");
imagejpeg($source);
imagedestroy($source);
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(14.08.2008 в 08:41)
| | логично.ступил.спасибо. | |
|
|
|
|
|
|
|
для: sanitar
(11.08.2008 в 18:54)
| | я врот чего не пойму.
Загрузка/выгрузка изображения потребовалась лишь затем, чтобы изменить его имя?! | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 20:10)
| | Вот тоже интересно, вернее не изменить, а "иметь имя" :) | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 20:10)
| | всмысле на сервер?нет,это минни-файловый архив фотографий для внутренних нужд. | |
|
|
|
|
|
|
|
для: sanitar
(11.08.2008 в 20:25)
| | нет. Не в этом смысле.
В смысле из файлового формата изображения (gif, jpg, png) во внутренний формат gdlib.
И тут же назад.
Вы полагаете, это примитивные операции? | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2008 в 21:17)
| | по этой причине:
просто использовать <img src> не могу т.к. имена файлов в основном такие: Павлюченко 1.2.jpg ,т.е. используется русский текст с пробелами,цифрами и точками.
обычный <img src> не выводит такое даже после UrlEncode. | |
|
|
|
|
|
|
|
для: sanitar
(12.08.2008 в 00:45)
| | Это не причина преобразовывать форматы.
Примените fpassthru(fopen(...))
gdlib-то зачем гонять? | |
|
|
|
|
|
|
|
для: Trianon
(12.08.2008 в 00:49)
| | мне показалось так проще....
попробую через fpassthru.результат отпишу. | |
|
|
|
|
|
|
|
для: sanitar
(12.08.2008 в 01:38)
| | readfile() для этого есть. Правда с ним докачку не сделаешь. | |
|
|
|