Frage

Gegeben: Alle hochgeladenen PDF-Dateien auf dem Server Präfix mit Zeitstempel. Später Benutzer kann wieder diese Dateien herunterladen. Diese (hässlich) Dateinamen würden nie wieder auf dem Server geändert werden.

Frage: Wenn ich die Möglichkeit, PDF-Datei zum Download, den Namen der Datei sieht hässlich und langwierig. Wie kann ich diesen Namen sinnvoll, etwas ändern, so dass, wenn der Benutzer Downloads diese Datei, Name nicht komisch aus?

Muss ich eine Kopie erstellen, da die ursprüngliche Datei umbenennen eine Option nicht wahr? Wäre es nicht zusätzlicher Aufwand sein für jede herunterladbare Datei? Offensichtlich die kopierte Datei zu löschen wäre ein weiterer zusätzlicher Schritt?

Ist es möglich, Datei zu umbenennen, sobald die Datei vollständig auf Client-Seite heruntergeladen wird?

Was euch vorschlagen?

War es hilfreich?

Lösung

So etwas wie folgt aus:

<?php
// We'll be outputting a PDF  
header('Content-type: application/pdf');

// It will be called downloaded.pdf  
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf  
readfile('original.pdf');
?> 

Andere Tipps

Ich musste dies für ein neues Projekt tun und war ein wenig verwirrt darüber, wie zu implementieren, aber es herausgefunden, kurz nachdem Klaus Antwort zu sehen. Um weiter auf Klaus zu erarbeiten Antwort:

1) Erstellen Sie eine Datei namens, sagen wir, "process.php". Ändern Klaus Code, so dass es zwei Parameter akzeptiert: die ursprünglichen Dateinamen und die neuen Namen. Mein process.php wie folgt aussieht:

<?php
$file = $_GET['file'];
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename='.$_GET['newFile']);
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

2) Erstellen Sie einen Link auf Ihrer Benutzer zugewandten Seite, die mit dem Prozessor-Skript-Punkte:

<a href="process.php?file=OriginalFile.pdf&newFile=MyRenamedFile.pdf">DOWNLOAD ME</a>

Sie müssen die gewünschten Dateinamen in den Content-Disposition Header setzen:

$name = 'desiredname.pdf';
header('Content-Disposition: attachment;filename="' . $name . '"');

Aber leider wird dies nicht von einem Team in Redmond entwickelt von einem bestimmten Web-Browser abgeholt werden. Wenn Sie erhalten möchten es auch in diesem Browser zu arbeiten, dann müssen Sie den gleichen Dateinamen als letzte Teil des Anforderungspfad anzuhängen. Zum Beispiel:. http://example.com/pdf/desiredname.pdf

Der Dateiname des Inhalts serviert wird in den HTTP-Header definiert. Schauen Sie sich um die PHP-Seite auf Header (auch die Kommentare) für weitere Informationen.

Ich war vor etwas ähnliches eine Weile zu tun, Dateien durch PHP dient (in meinem Fall, sie nicht zu benennen, sondern zu prüfen, ob die Person das Herunterladen sie in und wurde protokolliert wurde erlaubt, um diese Dateien zu sehen). Ich fand, dass pdf-Downloads nicht in IE nicht funktioniert, wenn ich auch diese Header hinzugefügt:

header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');

Ich bin mir nicht sicher, warum. Experiment und sehen, was passiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top