如何为PHP生成的图像设置默认的“另存为”名称?

时间:2010-11-17 08:59:29

标签: php header

这是我的代码。

<?php
function generate_card($card_number='',$card_price='',$card_expire='',$image_path='',$font_path)
{
    // store image on variable //
    $image = imagecreatefrompng($image_path);

    // some text color
    $color = imagecolorallocate($image, 255, 255, 0);

    // print card price //
    imagettftext($image, 15, 0, 200, 40, $color, $font_path, $card_price);
    // print card number //
    imagettftext($image, 15, 0, 15, 85, $color, $font_path, $card_number);
    // print expiry date //
    imagettftext($image, 12, 0, 145, 155, $color, $font_path, $card_expire);

    header('Content-type:image/png');
    imagepng($image);
    imagedestroy($image); 
}
generate_card('1234 5678 9101 1121','$200','12/13','card.png','verdana.ttf');
?>

我正在生成签证礼品卡,图片也会在页面上创建和显示。但我的问题是,当我想在Mozilla中保存这个图像时,它会给出“page_name.png”,在IE中它给了我“无标题”。 如何在保存时给出自己的名字,如“visa_gift_01.png”。

4 个答案:

答案 0 :(得分:5)

阅读此document 它解释了如何修改http标头

header('Content-Disposition:attachment;filename="visa_gift_01.png"');

答案 1 :(得分:4)

您可以发送额外的HTTP header来设置下载名称:

// Change the download name to visa_gift_01.png
header('Content-Disposition: attachment; filename="visa_gift_01.png"');

答案 2 :(得分:0)

您需要添加的是另一个标题:

header('Content-Disposition: attachment; filename="'.$name.'"');

应该足够了。

答案 3 :(得分:0)

为了在浏览器中显示图像,但仍提供用户右键单击图像并选择“另存为...”时的文件名,这就是您想要的:

header('Content-Disposition: Inline; filename="'.$filename.'"');

使用Inline而不是Attachment是与其他答案的主要区别,这将导致在加载页面时下载图像而不是在浏览器中显示图像。