我试过
$file = file_get_contents("http://my_site/wp-content/uploads/2013/04/Dev-TipsTricks.pdf", true);
echo $file;
但浏览器显示特殊字符(见图)。
我也试过
$mime_type = getMimeType($extension[1]);
ob_start();
header("Content-type: $mime_type");
header("Content-disposition: attachment; filename=$file");
ob_clean();
flush();
readfile($upload_dir['baseurl'].'/'.$file);
exit;
当我从localhost运行时它会下载文件,但在实时服务器上它也会显示特殊字符,请参阅图像。
我也跟着它file_get_contents
我也尝试过pdf
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file_name");
header("Content-Type: application/pdf");
header("Content-Transfer-Encoding: binary");
所有文件扩展名都会发生这种情况。
文件路径正确&如果我回应路径&在新浏览器标签中复制/粘贴它会打开 pdf &如果 docx 浏览器的路径允许下载。
浏览器警告显示:
Warning: Cannot modify header information - headers already sent by (output started at /home/me/public_html/my_site/wp-admin/includes/template.php:1638) in /home/me/public_html/my_site/wp-admin/download.php on line 224
这是 template.php
中的代码function _wp_admin_html_begin() {
$admin_html_class = ( is_admin_bar_showing() ) ? 'wp-toolbar' : '';
?>
<!DOCTYPE html>
<!--[if IE 8]>
<html xmlns="http://www.w3.org/1999/xhtml" class="ie8<?php echo $admin_html_class;?>"<?php do_action('admin_xml_ns');?><?php language_attributes();?>>
<![endif]-->
<!--[if !(IE 8) ]><!-->
<html xmlns="http://www.w3.org/1999/xhtml" class="<?php echo $admin_html_class;?>"<?php do_action('admin_xml_ns');?><?php language_attributes(); ?>>
<!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
<?php
}
现在我无法弄清楚bug在哪里......?
答案 0 :(得分:1)
header("Content-type: 'application/pdf'");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=filename.pdf");
echo $content;
这里你必须设置“内容”。这段代码对我有用。我从数据库中取出这个“内容”,在我的数据库中保存为.pdf文件。
答案 1 :(得分:0)
尝试在.htaccess中添加此内容
AddType application/pdf pdf