我正在使用以下代码尝试通过我的脚本传递图像,但所有发生的事情都是下载的html文件。
这是一个用于电子邮件跟踪的脚本,起初我正在更新数据库,然后我实际上继续传递图像,这是我遇到问题的地方。
下载的html文件包含以下文字GIF89a€ÿÿÿ!ÿXMP DataXMP ÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´``³²±°¯®¬«ª©¨§¦¥¤£¢¡ Ÿžœ›š™˜—–•”“’‘ŽŒ‹Š‰ˆ‡†…„ƒ‚€~}|{zyxwvutsrqponmlkjihgfedcba``_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! !ù,D;
这是我的PHP
$graphic_http = 'blank.gif';
$filesize = filesize( 'blank.gif' );
header( 'Pragma: public' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Cache-Control: private',false );
header( 'Content-Disposition: attachment; filename="image.gif"' );
header( 'Content-Transfer-Encoding: binary' );
header( 'Content-Length: '.$filesize );
readfile( $graphic_http );
任何人都可以指出我做错了什么吗?
由于
答案 0 :(得分:4)
您没有告诉浏览器文件类型是什么,因此它不会将其作为GIF图像处理,而是作为文本处理。
包括以下一行:
header ("Content-Type: image/gif");
//编辑
要阻止文件下载并在浏览器中打开,请删除以下行:
header( 'Content-Disposition: attachment; filename="image.gif"' );
这是告诉浏览器下载文件而不是简单地显示它的原因。
答案 1 :(得分:2)
您需要设置内容类型,如果是显示而非下载,则需要删除内容附件:
header( 'Pragma: public' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Cache-Control: private',false );
header('Content-Type: image/gif');
// header( 'Content-Disposition: attachment; filename="image.gif"' );
header( 'Content-Transfer-Encoding: binary' );
header( 'Content-Length: '.$filesize );
readfile( $graphic_http );