BLOB-PDF-Datei anzeigen

Ich habe einige PDF-Dateien, die in der WordPress-database als Blob gespeichert sind und ich muss diese Dateien anzeigen. Die Dateien sind nicht direkt mit Posts verknüpft.

Der Code, den ich derzeit habe, ist:

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; ?>

Das Problem ist, dass ich nicht das normale Öffnen / Speichern-Dateidialogfeld vom Browser bekomme, sondern vielmehr eine Menge:

 %PDF-1.5 %     21 0 obj  endobj 36 0 obj /Filter/FlateDecode /ID[]/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 bbd b  $    V  \ " @ M   k  x "n   A d  R   HL fbdX cD' 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 Ĭ)*      , - 

Kann mir bitte jemand sagen, wie ich die BLOB-Daten korrekt anzeigen kann?

Solutions Collecting From Web of "BLOB-PDF-Datei anzeigen"

Das sieht so aus, als wäre es eine Vorlagendatei. Wenn dies der add_header_info ist, wird die function add_header_info in send_headers lange nachdem send_headers gefeuert hat. Sie müssen diesen Code so verschieben, dass er früher ausgeführt wird. Es sollte von einer Mu-Plugin-Datei, einer Plugin-Datei oder von der functions.php Ihres Themes functions.php .

$FileType und diese anderen Variablen sind jedoch nicht im Gültigkeitsbereich. (Sie sind bereits in Ihrem Code außerhalb des Bereichs.) Es sieht so aus, als könnten Sie das beheben, indem Sie den gesamten Code innerhalb des Callbacks verschieben.

 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' ); 

Verwenden Sie Folgendes in Ihrer Vorlage, echo den Dateiinhalt zu wiederholen:

 global $FileContent; echo $FileContent; // or // echo $GLOBAL[$FileContent]; 

Aber das wird auf jeder Seite laufen, die schlecht wäre, also müssen Sie einen Schalter in Ihrem Callback hinzufügen.

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