Eu dau link de un fișier pdf pe pagina mea web pentru descărcare, ca mai jos
<a href="myfile.pdf">Download Brochure</a>
Problema este că atunci când utilizatorul face clic pe acest link, atunci
Dar vreau să se afișeze întotdeauna o fereastră pop-up către utilizator pentru descărcare, indiferent dacă "Adobe Acrobat" este instalat sau nu.
Vă rog să-mi spuneți cum pot face acest lucru?
În loc să creați un link către fișierul .PDF, faceți ceva de genul
<a href="pdf_server.php?file=pdffilename">Download my eBook</a>
care afișează un antet personalizat, deschide fișierul PDF (sigur din punct de vedere binar) și imprimă datele în browserul utilizatorului, după care acesta poate alege să salveze fișierul PDF în ciuda setărilor browserului său. pdf_server.php ar trebui să arate astfel:
header("Content-Type: application/octet-stream");
$file = $_GET["file"] .".pdf";
header("Content-Disposition: attachment; filename=" . urlencode($file));
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp))
{
echo fread($fp, 65536);
flush(); // this is essential for large downloads
}
fclose($fp);
PS: și, evident, rulați câteva verificări de sanitate pe variabila "file" pentru a împiedica oamenii să vă fure fișierele, cum ar fi: nu acceptați extensiile de fișiere, refuzați slashes, adăugați .pdf la valoare
Aceasta este cheia:
header("Content-Type: application/octet-stream");
Content-type application/x-pdf-document sau application/pdf este trimis la trimiterea unui fișier PDF. Adobe Reader setează de obicei gestionarul pentru acest tip MIME, astfel încât browserul va transmite documentul către Adobe Reader atunci când se primește oricare dintre tipurile MIME PDF.
Într-o aplicație Ruby on Rails (în special cu ceva de genul bijuteriei Prawn și a plugin-ului Prawnto Rails), puteți realiza acest lucru puțin mai simplu decât un script complet (cum ar fi exemplul PHP anterior).
În controlerul dvs:
def index
respond_to do |format|
format.html # Your HTML view
format.pdf { render :layout => false }
end
end
Partea render :layout => false îi spune browserului să deschidă fereastra "Would you like to download this file?" în loc să încerce să redea PDF-ul. Apoi, veți putea să creați un link către fișier în mod normal: http://mysite.com/myawesomepdf.pdf