Я пытаюсь динамически переименовать файл изображения JPEG, как он отображается для пользователя.
У меня есть файл image_generate.php со следующим кодом:
$file = $_GET['file'];
$imagepath = "path/to/image.jpg";
$image = imagecreatefromjpeg($imagepath);
header('Content-Type: image/jpeg');
$filename = "[site.com]_some_image_name_here";
header('Content-Disposition: attachment; filename="' . $filename . '.jpg"');
imagejpeg($image, NULL, 100);
imagedestroy($image); // Free up memory
И этовызывается тегом html-изображения следующим образом:
<img src="image_generate.php?file=imagenamehere" />
Пока что вывод имеет следующие результаты:
- Когда я щелкаю правой кнопкой мыши на изображении и нажимаю «Просмотр»Изображение, «появляется диалоговое окно загрузки и спрашивает, хочу ли я сохранить файл» [site.com] _some_image_name_here.jpg "(я хочу, чтобы это произошло)
- Если я щелкну правой кнопкой мыши на изображениеи нажмите «Сохранить изображение как» или «Сохранить изображение», имя файла, который необходимо сохранить, будет отображаться как исходное имя файла (независимо от того, какую переменную $ file удалось извлечь).
Как можноЯ исправлю вторую часть?Я хочу изменить имя файла изображения, даже когда пользователь нажимает «Сохранить изображение как» или «Сохранить изображение».
Я пытался изменить код следующим образом:
...
$rename = $filename . ".jpg";
imagejpeg($image, $rename, 100);
imagedestroy($image); // Free up memory
Но изображение не отображается на странице с тегом html (отображается как разорванное изображение).Я не очень знаком с заголовками HTML и Content-Dispositions.Я предполагаю, что там где-то есть ошибка ..?Есть идеи?
Спасибо за чтение!
Редактировать: .htaccess ниже
<IfModule mod_rewrite.c>
RewriteEngine On
# Sends image download request to image_generate.php for parsing
RewriteRule ^path/from/img/tag/downloads/(.*).jpg$ path/to/image_generate.php?file=$1 [NC,L]
RewriteRule ^path/to/image_generate.php$ /home/path/to/image_generate.php [NC,L]
</IfModule>