PHP imagejpeg - Trigger Download

Я использую PHP imagejpeg для создания простого изображения, как это..

// Create a blank image and add some text
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');

// Output the image
imagejpeg($im);

// Free up memory
imagedestroy($im);

Это работает, но я хотел бы, чтобы он автоматически запускал загрузку внутри браузера вместо отображения изображения.

Как я могу это сделать, мне нужно установить заголовок?

2 ответа

Все, что вам нужно сделать, это установить дополнительный заголовок:

// Create a blank image and add some text
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
header('Content-Disposition: attachment; filename=file-name.jpg'); // This will tell the browser to download it

// Output the image
imagejpeg($im);

// Free up memory
imagedestroy($im);

Вот документация

Я считаю, что вам нужно как минимум 3 заголовка:

header("Content-Type: image/jpeg"); // Content type
header("Content-Disposition: attachment; filename=file-name.jpg"); // Content deposition
header("Content-Length: $fileSize"); // YOUR FILE SIZE

в противном случае загрузка не будет работать в Firefox.

Другие вопросы по тегам