新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Header( "Content-type: application/octet-stream ");
成都创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目成都网站建设、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元平度做网站,已为上家服务,为平度各地企业和个人服务,联系电话:18980820575
基本上原因都出在这里,根据不同的php版本,有很多不同的写法,研究一下
filelist.php
?php
................
$result=mysql_db_query(.........id,filename.........);#查询结果并存入变量中
$rows=mysql_num_rows($result);#得出数据行数
for($i=0;$i$rows;$i++){
$total=mysql_fetch_array($result);
echo
"lia
href='filedown.php?fileid=$total[id]filename=$total[filename]'
target
='_blank'
$total[filename]/a/li";
}
...............
?
filedown.php
?php
$fid=$_GET['fileid'];
$fname=$_GET['filename'];
.....................
.....................
$result=mysql_db_query(.........,"select
id,filename,datasize,filedata
from
ftable
where
id='$fid'",.........);
$total=mysql_fetch_array($result);
$file_size=$total[datasize];
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:$file_size");
header("Content-Disposition:attachment;filename=".$total[filename]);
echo
$total[filedata];
...............
?
======
你说把二进制的字节流取出生成文件保存到磁盘然后给个超链接,
这样做法没意义,你既然把它存在库里了那直接stream给用户是最好的方式,否则你还得考虑把它还原到文件夹用户使用完后怎么处理的问题?如果保留那当初就应该同时把它存在文件夹省得者多麻烦,如果不保留那反复生成删除还有共享问题反而加重服务器负担。要么一次生成定期择优删除,又有许多代码有的写了。。。
首先, 你要知道图片的格式, 如: jpg, png 诸如此类
其次, 二进制只是一种储存格式, 不影响输出
具体如下
header("Content-Type: image/jpeg"); // image/jpeg: MIME类型, 各种图片都有各自的MIME类型
... 省略数据库读取
echo $sql['Image']; // 直接输出二进制数据
只要中间不出现意外的输出(如: PHP报错), 就可以了
直接读取出来放过去,但是要注意mysql存储的格式是类型:mediumblob
要变成图片,还需要php代码转化一下
?php
$bin= bstr2bin($json);
file_put_contents('../somefold/',$bin);
function bstr2bin($input){
// Binary representation of a binary-string
if (!is_string($input)) return null; // Sanity check
// Unpack as a hexadecimal string
$value = unpack('H*', $input);
// Output binary representation
$value = str_split($value[1], 1);
$bin = '';
foreach ($value as $v){
$b = str_pad(base_convert($v, 16, 2), 4, '0', STR_PAD_LEFT);
$bin .= $b;
}
return $bin;
你好,像制作验证码那样
把字节流扔进一个图片类型的文件里,然后就可以了
希望能解决你的问题,望采纳