Domanda

Data: tutti i file PDF caricati sul server vengono prefisso timestamp. Più tardi utente può scaricare nuovamente questi file. Questi (brutto) i nomi dei file non sarebbero mai cambiare di nuovo sul server.

Domanda: Quando io do la possibilità di scaricare il file PDF, nome del file sembra brutto e lungo. Come posso cambiare questo nome a qualcosa di sensato, in modo che quando utente scarica questo file, il nome non sembra strano?

Ho bisogno di fare una copia, in quanto rinominando il file originale non è un'opzione? Non sarebbe in testa in più per ogni file scaricabile? Ovviamente l'eliminazione del file copiato sarebbe un altro passo in più?

E 'possibile rinominare file una volta il file è stato scaricato completamente sul lato client?

Quello che voi ragazzi suggeriscono?

È stato utile?

Soluzione

Qualcosa di simile a questo:

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

Altri suggerimenti

avevo bisogno di fare questo per un recente progetto ed ero un po 'confuso su come implementare, ma figurato fuori subito dopo aver visto la risposta di Klaus. Per approfondire ulteriormente la risposta Klaus':

1) Creare un file chiamato, per esempio, "process.php". Modificare il codice di Klaus in modo che accetti due parametri: il nome del file originale e il nuovo nome. Il mio process.php appare come:

<?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) Creare un collegamento alla vostra pagina user-fronte che punta allo script del processore:

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

È necessario impostare il nome del file desiderato nell'intestazione Content-Disposition:

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

Ma purtroppo questo non sarà raccolto da un certo browser web sviluppato da un team di Redmond. Se si vuole farlo funzionare in quel browser così, allora avete bisogno di aggiungere il nome del file stesso come l'ultima parte del percorso richiesta. Per esempio:. http://example.com/pdf/desiredname.pdf

Il nome del file del contenuto servito è definito nelle intestazioni HTTP. Guardatevi intorno alla href="http://php.net/manual/en/function.header.php" rel="nofollow noreferrer"> pagina (anche i commenti) per ulteriori informazioni.

che stavo facendo qualcosa di simile qualche tempo fa, che serve file tramite PHP (nel mio caso, non rinominarli, ma per verificare che la persona che il download di loro è stato registrato in ed è stato permesso di vedere i file). Ho scoperto che in formato pdf download non ha funzionato in IE a meno che non ho aggiunto anche queste intestazioni:

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

Non so perché. Sperimentare e vedere cosa succede.

scroll top