PHP强制文件下载代码 - 错误

时间:2010-11-18 17:18:39

标签: php download

我正在使用以下代码

<?php
$rFile = $_GET['sfile'];
$rExt  = $_GET['ext'];
header("Content-disposition: attachment; filename=".urlencode( $_GET['sfile'] ).".".$_GET['ext']);
header('Content-type: Image/jpeg');
readfile( "wallpapers/".$rFILE.$rRes.$rExt );  
?>

我传递变量并正在下载文件..但是没有创建图像..

  • 我看到一个图像文件,图像图标正确,但没有预览
  • 图像未在任何图像查看器中打开(我使用的所有图像都是JPEG)
  • 所有下载的图像都有相同的大小336到337字节...所以我想也许传输大小有限,所以我使用Similar SO Question但之后只有文件大小增长到445bytes到446bytes不再...

该怎么做..我需要提供图像下载的直接链接......

4 个答案:

答案 0 :(得分:1)

我敢打赌啤酒,336到337字节包含一条PHP错误信息,告诉你问题是什么。

删除JPEG内容类型标题以查看输出。

答案 1 :(得分:1)

第1行你想要$rFile,第5行是$rFILE - 也许这就是问题所在?如果没有,没有看到错误消息就不可能说。

答案 2 :(得分:1)

我希望您正在对$ _GET数据进行一些消毒,否则您会遇到比未正确下载的图像数据更大的问题。该代码适用于目录遍历攻击。

答案 3 :(得分:0)

好的,现在我做了这个

$rFile = $_GET['sfile'];
$rExt  = $_GET['ext'];
header("Content-disposition: attachment; filename=".urlencode( $_GET['sfile'] ).".".$_GET['ext']);
header('Content-type: Image/jpeg');
readfile( "wallpapers/".urlencode($rFile).".".$rExt );

现在正在以正确的尺寸下载文件..但我仍然看不到预览..我的图像veiwers&amp;编辑们说这个

ACDsee 空白屏幕

Windows Page&amp;传真查看器无法预览

MS Paint 路径画图无法读取此文件这不是有效的位图文件。或者不支持其格式