Displaying BLOB PDF File

时间:2013-08-31 作者:user37408

我有一些pdf文件作为blob存储在wordpress数据库中,我需要显示这些文件。这些文件没有直接链接到任何帖子。

我目前拥有的代码是:

<div class="wrap">
<?php
global $wpdb;

$mydataset = $wpdb->get_row("SELECT * FROM wp_attachments WHERE ID = 1119");

$recordID = $mydataset->ID;
$FileType = $mydataset->FileType;
$FileSize = $mydataset->FileSize;
$FileName = $mydataset->FileName;
$FileContent = $mydataset->FileContent;

add_action( \'send_headers\', \'add_header_info\' );
function add_header_info() {
header("Content-Type: ". $FileType);
header("Content-Length: ". $FileSize);
header("Content-Disposition: attachment; filename=". $FileName);
echo $FileContent;
}

 echo $FileContent;
?>
问题是,我没有从浏览器中获得正常的“打开/保存文件”对话框,而是获得了大量:

%PDF-1.5 %���� 21 0 obj <> endobj 36 0 obj <>/Filter/FlateDecode
/ID[<3D64A2F9453F2A4097AB5FEE91CB4D65>]/Index[21 22]/Info 20 0 R/Length 78/Prev  
58282/Root 22 0 R/Size 43/Type/XRef/W[1 2 1]>>stream h�bbdb�$��V �\\"�@�M��k�x
"n���A�d��R �HLfbdXcD\'�3���a  endstream endobj startxref 0 %%EOF 42 0 obj 
<>stream h�bc2df`H�g�a@& �x�(�x���9X����YH�1
X������CC�C���A�As�d�+,��$��p00��iF �bn��&�� ��q� endstream 
endobj 22 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <>stream hތS�n�@��yLT�{�
Ɏc�m�X�mĬ)*�����,�-
有人能告诉我如何正确显示BLOB数据吗?

1 个回复
SO网友:s_ha_dum

这看起来像是一个模板文件。如果是,功能add_header_info 连接到send_headers 很久以后send_headers 已经开火了。您需要移动该代码,以便它能够更早地执行。它应该从mu插件文件、插件文件或主题的functions.php.

然而$FileType 这些其他变量将超出范围。(它们已经超出了代码的范围。)在我看来,您可以通过在回调中移动所有代码来解决这个问题。

function add_header_info() {
  global $wpdb, $FileContent;

  $mydataset = $wpdb->get_row("SELECT * FROM wp_attachments WHERE ID = 1119");

  $recordID = $mydataset->ID;
  $FileType = $mydataset->FileType;
  $FileSize = $mydataset->FileSize;
  $FileName = $mydataset->FileName;
  $FileContent = $mydataset->FileContent;

  header("Content-Type: ". $FileType);
  header("Content-Length: ". $FileSize);
  header("Content-Disposition: attachment; filename=". $FileName);
}
add_action( \'send_headers\', \'add_header_info\' );
在模板中使用以下内容echo 文件内容:

global $FileContent;
echo $FileContent;

// or 

// echo $GLOBAL[$FileContent];
但这将在每个不好的页面上运行,因此您需要在回调中添加swithc。

function add_header_info() {
  if (!is_page(\'page-slug\')) return;
  global $wpdb, $FileContent;
  // ...

结束

相关推荐

包含BLOG-Header.php时强制pdf下载不工作

我有一个名为downloads/download的文件中的代码。php:<?php header(\'Content-type: application/octet-stream\'); header(\'Content-Disposition: attachment; filename=\"file.pdf\"\'); readfile(\'file.pdf\'); ?> 它会正确提示下载文件。pdf。我需要跟踪下载,所以我想利用各种WP功能。为了将