Header( "Content-type: application/octet-stream ");
成都創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元平度做網(wǎng)站,已為上家服務(wù),為平度各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
基本上原因都出在這里,根據(jù)不同的php版本,有很多不同的寫法,研究一下
filelist.php
?php
................
$result=mysql_db_query(.........id,filename.........);#查詢結(jié)果并存入變量中
$rows=mysql_num_rows($result);#得出數(shù)據(jù)行數(shù)
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];
...............
?
======
你說把二進(jìn)制的字節(jié)流取出生成文件保存到磁盤然后給個(gè)超鏈接,
這樣做法沒意義,你既然把它存在庫里了那直接stream給用戶是最好的方式,否則你還得考慮把它還原到文件夾用戶使用完后怎么處理的問題?如果保留那當(dāng)初就應(yīng)該同時(shí)把它存在文件夾省得者多麻煩,如果不保留那反復(fù)生成刪除還有共享問題反而加重服務(wù)器負(fù)擔(dān)。要么一次生成定期擇優(yōu)刪除,又有許多代碼有的寫了。。。
首先, 你要知道圖片的格式, 如: jpg, png 諸如此類
其次, 二進(jìn)制只是一種儲(chǔ)存格式, 不影響輸出
具體如下
header("Content-Type: image/jpeg"); // image/jpeg: MIME類型, 各種圖片都有各自的MIME類型
... 省略數(shù)據(jù)庫讀取
echo $sql['Image']; // 直接輸出二進(jìn)制數(shù)據(jù)
只要中間不出現(xiàn)意外的輸出(如: PHP報(bào)錯(cuò)), 就可以了
直接讀取出來放過去,但是要注意mysql存儲(chǔ)的格式是類型:mediumblob
要變成圖片,還需要php代碼轉(zhuǎn)化一下
?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;
你好,像制作驗(yàn)證碼那樣
把字節(jié)流扔進(jìn)一個(gè)圖片類型的文件里,然后就可以了
希望能解決你的問題,望采納