Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714

    Far scaricare un file da PHP

    Salve a tutti.

    Vorrei chiedervi come potrei fare, in PHP, per far scaricare un file all'utente, senza che esso scopra l'url.

    Esempio.

    Normalmente se volessimo far scaricare un file ZIP, faremo un a href in questo modo


    http://<a href="http://www.miosito.i...ip</a>>Scarica

    Ma se io volessi far scaricare all'utente lo stesso file ma in questo modo:

    Scarica

    dove nella pagina php lancia un input per il download del file.

    Un saluto,
    Antonio

  2. #2
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    non so se ho capito bene, ma puoi provare a presentare, per il download, il pulsante di un form nel cui action="pagina_zip.php" in questa pagina, senza alcun tag html, c'č solo il codice php che ti permette il download (quindi con gli header opportuni per lo scopo)
    ed in ultimo l'header
    header("location: pagina.php");
    che ti reindirizza.
    Dovrebbe poter andare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Quindi tu dici di fare una pagina PHP

    E alla fine fare un Header, esempio, di questo tipo:


    Header("Location file/file.zip");

  4. #4
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    dico che nella pagina devi mettere solo il codice che, come viene attivata la pagina [e viene attivata con le informazioni che vengono dal form] chiede il download (e occorrono + header)
    codice:
    header("Content-Disposition: attachment; filename='nomefile.zip'"); 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Pragma: public");
    alla fine c'č anche l'header per il reindirizzamento.
    ciao

  5. #5
    sconsiglio l'header location: perchč poi cosi non nascondi niente

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Cosa consigli?

  7. #7
    io non ho bisogno di nascondere il nome del file e quindi utilizzo questo script

    script: downloadfile.php

    Codice PHP:

    header
    ('Content-Type: text/plain');
    header("Content-Disposition: attachment; filename=" .substr($_GET['file'],strrpos($_GET['file'],'/')+1));
    readfile($_GET['file']);
            
    exit; 
    per richiamarlo basta fare downloadfile.php?file=percorsofile

    ovviamente si puō "criptare" con facilitā il parametro facendolo diventare file=23hj1o3n12o3no1

    // nota che se vuoi utilizzarlo per qualsiasi file dovresti cambiare anche il content-type

  8. #8
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087

    Re: Far scaricare un file da PHP

    Originariamente inviato da Toniello
    ..
    Vorrei chiedervi come potrei fare, in PHP, per far scaricare un file all'utente, senza che esso scopra l'url.
    .......................................
    Antonio
    allora hai una pagina dove c'č un form e chiamata form_down.php con il codice
    codice:
    <?php
       session_start();
    	$_SESSION['parola'] = "ecco";
    ?>
    <form action="zip.php" method="post">
    <input type="submit" value="scarica zip" />
    </form>
    dal sorgente della pagina si legge a quale file (zip.php) vengono passati i dati. Ma non viene letto
    nč il nome della sessione, nč il valore.
    Nella pagina zip.php
    codice:
    <?php
    session_start();   //viene passata la sessione
    // se arrivano a questa pagina avendo copiato ed incollato l'indirizzo vengono reindirizzati
    // se non arrivi tramite un form con method post
    // se non c'č la sessione chiamata parola ed il cui valore č ecco
    // vieni reindirizzato
      if($_SERVER['REQUEST_METHOD'] != 'POST' OR !$_SESSION['parola']  OR $_SESSION['parola'] !="ecco" ) {
      header("location: form_down.php");
      exit();
      }
    // la sessione resta attiva ed allora .....
      $_SESSION = array();    //  la sessione diventa un array vuoto;
      $_SESSION['parola'] = FALSE;  //ulteriore cautela
      session_regenerate_id("delete_old_session");   //  per paranoici
      
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header('Content-type: application/zip');
    header('Content-Disposition: attachment; filename="NOME.zip"');
    header("Content-Transfer-Encoding: binary\n");
    header('Pragma: public');
    readfile('original.zip');
    exit();
    ?>
    ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Se invece il file dovessere essere, non un .zip ma esempio un video,
    un .avi, e' possibile FORZARE il download invece di farlo aprire con window media player di default?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Nessuno?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.