Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [PHP] download file

  1. #1

    [PHP] download file

    ho scritto una funzione per scaricare dei txt generati tramite form.
    il form salva i dati in un txt (correttamente); poi, richiamo la funzione "scarica" per far eseguire il download del file txt, ma anzichè scaricare il txt, viene salvato il codice html della pagina che si apre dopo il corretto invio dei dati del form

    posto il codice della funzione...

    Codice PHP:
    function scarica($name)
    {
    $fname $name.".txt";
    $fpath "/download/txt/".$fname;
        

    header("Content-Type: application/octet-stream");
    header("Content-Type: application/force-download");
    header("Content-Type: application/download");
       
    header("Content-Disposition: attachment; filename=$fname");
       
    header("Content-Transfer-Encoding: binary");

    readfile($fpath);
           } 
    ho provato anche a usare il codice della pillola a riguardo, ma nn funzia... :/

    grazie,

    kicko

    PS: ho provato a usare il tasto search, ma nn funzia!! siete già al corrente di ciò? era così utile :P

    EDIT: ho dimenticato la dicitura [PHP] selezionabile automaticamente tra i campi del titolo. allora sono rientrato per inserirla tramite l'edit del thread, che però nn prevede quel campo ... visto che il sito è in versione beta, secondo me nn sarebbe una cattiva idea dar la possibilità di inserire anche quel campo tra le opzioni della modifica thread

  2. #2
    prova aggiungendo un exit(); dopo readfile, qui trovi un' altra funzione collaudata per il download che va bene praticamente per tutto:
    http://www.devpro.it/php4_id_72.html

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    niente... sempre stesso problema.
    la funzione per scaricare il file che mi hai passato è perfetta.... solo che secondo me nn trova il file correttamente (o meglio, nn capisco perchè nn vada a prendere proprio quel file che io penso di passare correttamente alla funzione)

    se può essere utile per la soluzione, le cartelle sono così strutturate:

    root/functions.php (che contiene tutte le funzioni compresa quella per il download)
    root/txt/index.php (con include del file functions.php di sopra)
    root/txt/file.txt (file da scaricare..)

    sto uscendo di testa ... sono due gg che provo funzioni (anche di script trovati su freephp) cercando di riadattarli, ma senza esito ...

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    In Content-Type manca il nome del file.
    Mancano alcuni header che IE (se usi IE) richiede.
    Passa il file con percorso assoluto.

    Io uso qualcosa di questo tipo (forzo il download di ZIP o PDF):

    Codice PHP:
    //$File: percorso [b]assoluto[/b] + nomefile del file da inviare al browser
    //$OPZNomeFile: nome del file (se diverso da quello con cui il file è immagazzinato sul filesystem del server)
    function force_download($File$OPZNomeFile)
      {
      
    $dim filesize($File);

      
    // Posso forzare un nome diverso da per il file da inviare al browser
      
    if ($OPZNomeFile==""$NomeFile substr($File,strrpos($File,"/")+1,strlen($File));
      else 
    $NomeFile $OPZNomeFile;

      
    $estensione strtolower(substr($NomeFile,strrpos($NomeFile,".")+1,strlen($File)));

      if (
    $estensione == "pdf"$apptype "application/pdf";
      else if (
    $estensione == "zip"$apptype "application";
      else 
    $apptype "application/force-download";

      
    // Forza il download via HTTP + APERTURA
      
    header("Content-Type: ".$apptype."; name=".$NomeFile);
      
    header("Content-Transfer-Encoding: binary");
      
    header("Content-Length: ".$dim);
      
    header("Content-Disposition: attachment; filename=".$NomeFile);
      
    header("Expires: 0");
      
    header("Cache-Control: no-cache, must-revalidate");
      
    header("Cache-Control: private");
      
    header("Pragma: public");
      
    readfile($File);
      } 

    [.:: JaguarXF ::.]
    __________________

  5. #5
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    La sintassi di utilizzo è ovviamente questa:

    Codice PHP:
    force_download($file$nomefile); 
    Esempio:

    Codice PHP:
    force_download("C:/tmp/pincopallo.txt""UOVO.txt"); 
    Oppure:

    Codice PHP:
    force_download("C:/tmp/pincopallo.txt"""); 

    [.:: JaguarXF ::.]
    __________________

  6. #6
    grazie a entrambi per l'aiuto, ma il problema non è risolto.
    poichè le funzioni da voi consigliate non presentano errori (in quanto testate e ritestate), il problema ovviamente continua a essere nel mio codice.
    per togliermi ogni dubbio ho creato questa pagina

    Codice PHP:
    <?php
     
    echo "<a href=\"?file=poba.zzz\"> Clicca qua per salvare il file txt</a>";
    if(isset(
    $file)) force_download($file"nomefile.txt");



    function 
    force_download($File$OPZNomeFile)
      {
      
    $dim filesize($File);

      
    // Posso forzare un nome diverso da per il file da inviare al browser
      
    if ($OPZNomeFile==""$NomeFile substr($File,strrpos($File,"/")+1,strlen($File));
      else 
    $NomeFile $OPZNomeFile;

      
    $estensione strtolower(substr($NomeFile,strrpos($NomeFile,".")+1,strlen($File)));

      if (
    $estensione == "pdf"$apptype "application/pdf";
      else if (
    $estensione == "zip"$apptype "application";
      else 
    $apptype "application/force-download";

      
    // Forza il download via HTTP + APERTURA
      
    header("Content-Type: ".$apptype."; name=".$NomeFile);
      
    header("Content-Transfer-Encoding: binary");
      
    header("Content-Length: ".$dim);
      
    header("Content-Disposition: attachment; filename=".$NomeFile);
      
    header("Expires: 0");
      
    header("Cache-Control: no-cache, must-revalidate");
      
    header("Cache-Control: private");
      
    header("Pragma: public");
      
    readfile($File);
          exit(
    0);
      }
    ?>
    ed ecco il risultato che ottengo nel file che viene scaricato

    codice:
     Clicca qua per salvare il file txt
    /*
    
    contenuto file txt
    
    */


    ovvero pare che salvi in un nuovo txt nel desktop prima il codice della pagina, e solo dopo il contenuto del file txt

    :master: :master:

    voi che ci capite ? dove sta l'errore ?

    PS: ho provato indistintamente le due funzioni, sia quella sopra postata, che l'altra da voi consigliata .. ottenendo sempre lo stesso identico risultato ...

  7. #7
    if(isset($_GET['file'])) force_download($_GET['file']);
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Ma l'echo e la function sono sullo stesso script??

    [.:: JaguarXF ::.]
    __________________

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.