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

如何为PHP生成的图像设置默认的“另存为”名称?,php,header,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

这是我的密码

<?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');
?>
我正在生成visa礼品卡,图像也已创建并显示在页面上。但我的问题是,当我想在Mozilla中保存这张图片时,它会给出page_name.png,而在IE中,它会给我一个无标题的页面。
如何在保存时提供自己的名字,如visa_gift_01.png。

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

// Change the download name to visa_gift_01.png
header('Content-Disposition: attachment; filename="visa_gift_01.png"');
读这个 它解释了如何修改http头

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

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

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

应该足够了。

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

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

使用内联而不是附件是与其他答案的关键区别,这将导致加载页面时图像被下载而不是显示在浏览器中。

请编辑您的问题以显示代码格式。我为您设置了代码格式。将来,您可以通过在行的开头放置4个空格来格式化代码。带有0和1的按钮将自动为您执行此操作。如果我要下载图像,您是对的aefxx。。。我不是说。。。我每页显示20张卡片。当我右键单击图像并单击“另存为”时,它必须给出名称。您是将图像嵌入到HTML页面中,还是仅链接到动态创建图像的PHP文件?我将获得价格,数据库中的到期日期和卡号,我将通过传递不同的参数调用此函数,然后卡将显示在页面上。当我右键随机点击任何图像时,都必须将其另存为礼品卡$x。每一张卡的x美元都不一样,这不是我想要的。我想知道用户应该如何到达显示图像的站点。您是在使用标签还是他在跟踪动态图像创建的链接?当我访问user_card.PHP时,用户可以看到可以购买的卡。所以在那个页面中,我收集了可用的卡片,并在循环中调用这个函数。假设我想卖5张卡,那么我会调用这个函数5次。如果我想下载图像,你是对的。。。我不是说。。。我每页显示20张卡片。当我在图像上单击鼠标右键并单击“另存为”时,它必须给出名称。@Madan Sapkota将图像添加到带有标记的HTML文档中时,这同样有效。至少对我来说是这样…@Veger->我没有添加任何标签。我正在循环函数并获取卡片。假设我想显示20个图像,那么我将循环此函数20次。从20张图片中,我可以选择任意一张,然后右键单击并保存为当时的页面。\u name.png或未命名的“我想要我自己的”图片。如何显示它们,以便右键单击它们,在HTML页面中显示它们?你真的试图添加额外的标题吗?@Veger:我不认为这家伙真的知道我们在说什么。在这里,我们帮不了他。这根本没有任何意义!?!