特别是pdf文件。
以及下载管理器等程序在下载时无效。
v?-x¢b(°ه-z zڈ÷÷μï½TTکêùQïىxùS - jîآ·×Yï¹oف5 KK÷¾oصتمح+¾|œ:و†lo n“w w w w w w w w w w w w†Æ +أجشƒœرد;-ںê•ؤ...¬RH|ħ镝ے#½= @'X'§¾ذXœtz”†رص0 ALو>“ء²{÷ڈے½} F;âB|کژ¯“كگ咋طPeüpy,¥¼تŒ•MR±瓦特گçي¢âٹ '¬} Fzى3¢e¾NAو^4è¬{j =¤ر³جسâ<¶-5Mz& @ +MYN1¨Cںq)زêذش£M nj] T‡à*×h0ï3D¤6غإQ.μg¥w«ي|م+s“çكûmٍاe¯Œغ½وؤ~لà…½ں$/‡ھ(!·@‡]µظtحîز4»CQeں[°ظ5گ+è’ہù4›MQd™@ں|‡فژd؟×ë×F*xز‘ ¹’پ÷i·?ù×ـسخ½Mأ}ق¸َOe$ِ à'ظgءl”ƒ=fRن(rإهـPy¨2ش2ج:طQî49œt رA3kfفذ’){¯'7ذE=»نx¾ةLb|‘شاـ×s ل‡ةأجô‰—ثSùy¦y†uھc>ا/’›Zç9Vٍ·بش&¸ةq“s؟Yعlzگïگ_v¼ئ؟!؟د h=لّ’ےJتْ…£ںبb÷U;Lآڑ›eڑƒ¨}كFپ ں›Uنvi>“]¤vçW†•Bڑˆˆ´!ج=¥4†é1حز ہحٹ‚é?“ل
¢qع ¬ض4 <فل吨ڑ克ؤbوT§ةOEEچ8“ س©#ôںآXXVثs1ث‚¹ ;†¹ôûAâDٹEت7[Hùùd'N"ضر’ے_JUWَُô¹sg¦w±#ygخمVWuWWW?~Oâ(صAàüةف¯çüك»éد‡ےxWë®4ٌ£;Hkز؟ے_ؤƒSر~ü÷»ےQpئ¨C0؛{,=ƒ=َù‰ég”qً?™ïH،l{[:گJ›Uي¢؛ٍص,أوm)¤>ٌ6فے°R:^ùêî[ثٹ3¢¾m…ƒضŒ‡ إVeززF{{0BMˆڑں°î
ùخVيئ[هYPüG6Eàغn {[££آدù•د¥·ءىفس¾¸÷<〜÷= /
这是我的PHP代码下载
<?php
$company =$_GET['company'];
// Make sure an ID was passed
if(isset($_GET['id'])) {
// Get the ID
$id = intval($_GET['id']);
// Make sure the ID is in fact a valid ID
if($id <= 0) {
die('The ID is invalid!');
}
else {
// Connect to the database
$dbLink = new mysqli('localhost', 'sqldata', 'sqldata', 'balhaf');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
// Fetch the file information
$query = "
SELECT mime, name, size, data
FROM $company
WHERE id = $id";
$result = $dbLink->query($query);
if($result) {
// Make sure the result is valid
if($result->num_rows == 1) {
// Get the row
$row = mysqli_fetch_assoc($result);
// Print headers
header("Content-Type: ". $row['mime']);
header("Content-Length: ". $row['size']);
header("Content-Disposition: attachment; filename=". $row['name']);
// Print data
echo $row['data'];
}
else {
echo 'Error! No image exists with that ID.';
}
// Free the mysqli resources
@mysqli_free_result($result);
}
else {
echo "Error! Query failed: <pre>{$dbLink->error}</pre>";
}
@mysqli_close($dbLink);
}
}
else {
echo 'Error! No ID was passed.';
}
?>
答案 0 :(得分:0)
在MySQL中使用BLOB
以防止数据因编码而发生更改(可能存在产生错误的编码问题,因为BLOB是二进制安全的,因此保存)
最好将链接存储为数据库中的文件引用,而不是保存文件的实际内容并使用file_get_contents
和其他相关函数检索文件以获取mimetype(或{{1} })...
查看Trying to download Blob via PHP / MySQL和http://www.sitepoint.com/forums/showthread.php?693871-Problem-using-PHP-to-pull-binary-files-from-a-BLOB-field-in-MYSQL
答案 1 :(得分:0)
在开始使用ob_end_clean设置标头之前,请立即尝试刷新输出缓冲区,然后在回显之后立即退出。看看section of the PHP book on Output Control。
另一种可能性是,在尝试回显数据时,内存不足,并且错误正被所有前面的二进制文件混淆。尝试将二进制文件拆分为较小的块(substr
是二进制安全的),迭代它们并将它们返回到输出缓冲区。