【发布时间】:2017-08-06 02:47:21
【问题描述】:
我对 php 知之甚少,对于任何愚蠢的错误,我深表歉意。我在网上找到了这段代码,但不是我想要的。
如下所示,我正在显示一个表单,用户在其中写了一些东西,然后单击“CRIAR SELO”按钮,页面得到刷新,该文本被放到图像上并显示供他使用鼠标右键下载.
我希望当用户单击“CRIAR SELO”按钮时,会显示一个窗口,以便他可以选择将文件保存在计算机中的哪个位置,这样就无需右键单击并保存。
*我不需要一直显示图片,所以如果不能同时做(显示和强制下载窗口)也没问题。
这是表格(index.php):
<?php $rda = isset($_GET['rda'])?$_GET['rda']:"00000BR"; ?>
<form action="" method="get" />
<input name="rda" type="text" value="" placeholder="00000BR">
<img src="selo.php?rda=<?php echo $rda ?>">
<input type="submit" name="enviar" class="confirma" value="CRIAR SELO »">
</form>
这里是 PHP (selo.php):
<?php
$imagem = imagecreatefromjpeg( "00000BR_01.jpg" );
$cor = imagecolorallocate( $imagem, 000, 000, 000 );
$font = "verdanab.ttf";
$rda = urldecode( $_GET['rda'] );
imagettftext($imagem, 20, 0, 37, 50, $cor, $font, $rda );
header('Content-type: image/jpeg');
imagejpeg( $imagem, '', 100 );
imagedestroy($imagem);
?>
感谢您的帮助。
【问题讨论】:
-
尝试添加-header('Content-Disposition: attachment; filename="picture.jpg"');在第一个标题之后
-
@AlexeyShatrov 您好,感谢您的回复。我尝试了您的建议,但不幸的是没有奏效。
-
您显然不是在要求客户端下载(这真的很棘手,因为没有办法从客户端 JavaScript 模拟 HTTP 标头),而是旧的服务器端东西。
Content-Disposition: attachment确实是解决方案。它到底怎么不适合你?没有生成标头吗?它被浏览器忽略了吗?下载是否损坏?还有什么? -
@ÁlvaroGonzález 我不知道它是否没有被生成或忽略(抱歉,对这个主题了解不多),添加 Alexey 的建议后没有任何改变。我编辑了这个问题以更好地表达我自己。我希望当用户单击“CRIAR SELO”按钮时,会显示一个窗口,以便他可以选择在他的计算机中保存文件的位置。
-
@AlanFranco 除非我遗漏了什么,否则您的任何更新都不会尝试回答这个问题。如果问题是图像保存在默认的 Downloads 文件夹中,那是您无法控制的浏览器功能。