Start · Sprachen · PHP · Referenz · fdf_get_attachment

fdf_get_attachment

Funktion

Extrahiert eine in einem FDF-Dokument eingebettete hochgeladene Datei und speichert sie unter dem angegebenen Pfad.

seit PHP 4.3.0 Kategorie: io

Signatur

fdf_get_attachment(resource $fdf_document, string $fieldname, string $savepath): array

Beschreibung

fdf_get_attachment() gehört zur FDF-Toolkit-Erweiterung (Forms Data Format) und ermöglicht es, Dateianhänge aus FDF-Dokumenten zu extrahieren. FDF-Dateien werden häufig in Verbindung mit Adobe-Acrobat-Formularen verwendet, um Formulardaten – einschließlich Dateiuploads – zu übertragen.

Die Funktion liest den Anhang, der dem angegebenen Formularfeld ($fieldname) zugeordnet ist, aus dem FDF-Dokument heraus und speichert die extrahierte Datei am angegebenen Speicherort ($savepath). Der zurückgegebene Array enthält Metainformationen über die gespeicherte Datei, z. B. den tatsächlichen Dateinamen und den Speicherort.

Diese Funktion ist sinnvoll in Workflows, bei denen Benutzer über PDF-Formulare Dateien hochladen, die dann serverseitig weiterverarbeitet werden müssen. Das FDF-Format ermöglicht hierbei eine strukturierte Übergabe der Daten an den Server.

Hinweis: Die FDF-Erweiterung ist in modernen PHP-Versionen nicht mehr standardmäßig verfügbar und gilt als veraltet. Für neue Projekte sollten alternative PDF-Bibliotheken wie FPDF, TCPDF oder iText erwogen werden.

Parameter

Name Typ Default Beschreibung
$fdf_document Pflicht resource Eine FDF-Dokumentressource, wie sie von fdf_open() oder fdf_open_string() zurückgegeben wird.
$fieldname Pflicht string Der Name des Formularfeldes im FDF-Dokument, dem der Anhang zugeordnet ist.
$savepath Pflicht string Der vollständige Pfad (Verzeichnis oder Dateiname), unter dem die extrahierte Datei gespeichert werden soll. Wird nur ein Verzeichnis angegeben, wird der Originaldateiname verwendet.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives Array mit Informationen über die gespeicherte Datei zurück. Das Array enthält typischerweise die Schlüssel path (vollständiger Speicherpfad der gespeicherten Datei) und name (Originaldateiname des Anhangs). Im Fehlerfall wird false zurückgegeben.

Beispiele

Dateianhang aus einem FDF-Formular extrahieren

<?php
// FDF-Datei öffnen, die von einem PDF-Formular übertragen wurde
$fdf = fdf_open_string($HTTP_RAW_POST_DATA);

if ($fdf !== false) {
    // Anhang aus dem Feld 'uploaded_file' extrahieren und in ein Verzeichnis speichern
    $savepath = '/var/uploads/';
    $result = fdf_get_attachment($fdf, 'uploaded_file', $savepath);

    if ($result !== false) {
        echo 'Datei gespeichert unter: ' . $result['path'] . PHP_EOL;
        echo 'Originaldateiname: ' . $result['name'] . PHP_EOL;
    } else {
        echo 'Fehler beim Extrahieren des Anhangs.' . PHP_EOL;
    }

    fdf_close($fdf);
} else {
    echo 'FDF-Dokument konnte nicht geöffnet werden.' . PHP_EOL;
}
?>
Datei gespeichert unter: /var/uploads/dokument.pdf Originaldateiname: dokument.pdf

Anhang mit explizitem Zieldateinamen speichern

<?php
// FDF aus einer Datei öffnen
$fdf = fdf_open('/pfad/zur/formular.fdf');

if ($fdf !== false) {
    // Zieldateiname explizit angeben
    $savepath = '/var/uploads/anhang_' . time() . '.bin';
    $result = fdf_get_attachment($fdf, 'dateifeld', $savepath);

    if (is_array($result)) {
        echo 'Gespeichert: ' . $result['path'] . PHP_EOL;
    }

    fdf_close($fdf);
}
?>
Gespeichert: /var/uploads/anhang_1700000000.bin

// Wichtig · Fallstricke

Sicherheitshinweis: Der extrahierte Dateiname (name) stammt aus dem FDF-Dokument und sollte niemals ungeprüft als Dateisystemname verwendet werden. Pfadtraversal-Angriffe (z. B. durch ../ im Dateinamen) müssen durch geeignete Validierung und Sanitierung verhindert werden. Verwende basename(), um nur den Dateinamen ohne Pfadanteile zu extrahieren.

Deprecation: Die FDF-Erweiterung (fdf_*) ist seit langem veraltet und in PHP 8 nicht mehr ohne Weiteres verfügbar. Sie erfordert das Adobe FDF Toolkit als externe Bibliothek. Für neue Projekte sollten modernere Alternativen zur PDF-Verarbeitung genutzt werden.

Stelle sicher, dass das Zielverzeichnis ($savepath) für den Webserver-Prozess beschreibbar ist, und beschränke den Zugriff auf gespeicherte Dateien durch geeignete Serverkonfiguration.