У меня есть динамическое изображение, которое использует GD для добавления некоторых наложенных изображений / текста. Это будет dynamicImage.php? FirstName = Bob & lastName = Sacamano. Я хочу получить приглашение загрузить этот файл, поэтому я создал файл download.php, который будет выполнять функции посредника:
//Get the Arguments
$file .= "firstName=".filter_var($_GET['firstName'], FILTER_SANITIZE_STRING);
$file .= "&lastName=".filter_var($_GET['lastName'], FILTER_SANITIZE_STRING);
//get The File Size
$size = intval(sprintf("%u", filesize($file)));
//Header Info to Prompt for Download and name it a .jpg
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-disposition: attachment; filename=dynamicImage.jpg");
header("Content-Length: ".$size);
readfile($file, true);//.$file);
Есть 2 проблемы, сначала я получаю эту ошибку:
PHP Warning: filesize() [<a href='function.filesize'>function.filesize</a>]: stat failed for dynamicImage.php?firstName=bob&lastName=Sacamano in /www/download.php on line 19
PHP Warning: readfile(dynamicImage.php?firstName=bob&lastName=Sacamano) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in /www/download.php on line 25
Посмотрите, как он анализирует & to & amp; ? Но не только это. Если я уберу аргументы и просто оставлю dynamicImage.php, он предложит мне загрузить необработанный файл php Есть ли способ, которым я могу заставить его запустить PHP, а затем загрузить сгенерированное изображение?
Кстати, мой dynamicImage.php заканчивается на:
header("Content-Type: image/JPEG");
ImageJpeg ($bg);
imagedestroy($bg);
FIXD. Я изменил мой dynamicImage.php таким образом:
if(isset($_GET['download'])){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-image');
header("Content-disposition: attachment; filename=dynamicImage.jpg");
}else{
header("Content-Type: image/JPEG");
}
ImageJpeg ($bg);
imagedestroy($bg);