宝马娱乐在线112222 > 网络应用 > php下载jpg文件为空解决方法

原标题:php下载jpg文件为空解决方法

浏览次数:181 时间:2019-10-01

代码如下:

 

header("content-type: {$filetype}");
header("expires: 0");
header("cache-control: must-revalidate, post-check=0,pre-check=0");
header("pragma: public");
//此处增加编码设定
header('content-transfer-encoding: binary');
//此处最重要,目的是要清空输出的字节
ob_clean();
//此处等于下面被注射的两行,可节省代码
readfile($filepath);

 

1、echo $filepath;

ip转换
php中将ip转换成整型的函数ip2long()容易出现问题,在ip比较大的情况下,会变成负数。

这时我怀疑在文件输出到客户端的时候编码出了问题

第三行代码是把下载的内容读进文件中。

$file_content = file_get_contents($filepath);
echo $file_content;
exit; 

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('content-description: file transfer');
    header('content-type: application/octet-stream');
    header('content-disposition: attachment; filename='.basename($file));
    header('content-transfer-encoding: binary');
    header('expires: 0');
    header('cache-control: must-revalidate, post-check=0, pre-check=0');
    header('pragma: public');
    header('content-length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
宝马娱乐在线,    exit;
}
?>

下载下来发现文件大小与原始文件一致,但是打开后还是为空,可以确定在文件输出的时候出现了问题

第一行代码是强制下载;

我理解ob_clean()等于.net中的response.clear();

由于ip转换成的整型值太大超出了整型的范围,所以变成负数。需写成$ip_n = bindec(decbin(ip2long($ip)));这样便可得到无符号的整型数,如下

$filetype = "image/pjpeg";
header("content-type: {$filetype}");    

第二行代码是给下载的内容指定一个名字;

 使用file_put_contents("d:aaa.jpg",file_get_contents($filepath)),将文件保存到服务器,保存的文件可以打开

文件下载代码

header("expires: 0");
header("cache-control: must-revalidate, post-check=0,pre-check=0");
header("pragma: public");

<?php
$ip = "192.168.1.2";
$ip_n = ip2long($ip);
echo $ip_n;      //得到 -1062731518
?>

2、根据输出的文件完整路径,打开文件,没有问题

php教程常用ip转换与文件下载代码

 header("content-disposition: attachment; filename="{$headername}";");

 

本文由宝马娱乐在线112222发布于网络应用,转载请注明出处:php下载jpg文件为空解决方法

关键词:

上一篇:没有了

下一篇:没有了