2012-04-13 5 views
0

ich einige mehrere Anlagen in der Datenbank gespeichert sind, in einer Spalte durch die Attachments Daten über Code Serialisierung:deserialisieren mehrere Anlagen Daten

 $files = array(
'file1' => base64_encode(file_get_contents('back.jpg')), 
'file2' => base64_encode(file_get_contents('email.jpg')), 
'file3' => base64_encode(file_get_contents('web.jpg')), 
); 
    // serialize 
    $filesData = serialize($files); 

nun in einer anderen PHP-Seite, ich bin immer zum Download der Dateien, In dem Sie die oben genannten Dateien Daten serialisieren, erhalten sie aus der Datenbankspalte "Daten"

Verwenden Sie den folgenden Code zu unserialisieren Daten, aber es scheint, dass die Daten nicht unserilisiert sind, habe ich drei Bilder gespeichert, und wenn ich retrive ihnen, ich bekomme eine TXT-Datei heruntergeladen, in der geschrieben "Array"

 if($result->num_rows == 1) { 
     $row = mysqli_fetch_assoc($result); 
     // Print headers 
      header("Content-Type: ". $row['mime']); 
      header("Content-Length: ". $row['size']); 
      header("Content-Disposition: attachment; filename=". $row['name']); 

     $files = unserialize($row['data']); 
      echo $files; 
     } 
+0

Ein Dateinamen und Content-Disposition, aber die Daten von drei Dateien Echo. Wie soll das funktionieren? Ich denke, Sie müssen die HTTP-Spezifikation (en) erneut lesen, wenn es etwas gibt, das Ihnen erlaubt, drei Dateien gleichzeitig mit einer HTTP-Antwort zu senden (ich glaube nicht, dass es leicht möglich ist, und sonst nicht trivial zu lösen, da es ein sehr ungewöhnliches Szenario, aber es gibt mehrteilige Antworten in HTTP und einige Browser unterstützen es sogar). – hakre

Antwort

0

$ files ist ein Array mit den drei Dateien, was erwartest du?

"Array" ist das Ergebnis der aus echo.

versuchen $ files [ 'file1'] etc ..

+0

Ich habe versucht, echo $ files ['file1'], das gleiche Ergebnis nur die .TXT-Datei enthält jetzt die "Code-Zeichen für Bilder", denke ich. –

+0

Ich kann nicht herausfinden, was Sie tun möchten, bitte spezifizieren Sie weiter – worenga