Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [PHP]forzare il download di un file....

    ciao a tutti,
    ho scritto queste righe di php affinchè un file presente in una cartella sul server venisse scaricata, a prescindere se è un PDF pittuttosto che JPEG o DOC... la finesta per scaricare si apre, ma quando vado a vedere il file che ho scaricato esso è di 0Kb.

    Codice PHP:
    $id=mysql_result($result,$i,"id");
                
    $file_articolo=mysql_result($result,$i,"file_articolo");
                
    $nome_file basename ($file_articolo);
              
    //  $tipo_file
              
                
    $dimensione filesize ("gestione/upload_files/".$nome_file);        
                
    $tipo_file filetype("gestione/upload_files/".$nome_file);
                
    header("Content-type: $tipo_file");
                
    header("Content-length: $dimensione");
                
    header("Content-Disposition: attachment; filename=$nome_file");
                
    header("Content-Description: PHP Generated Data"); 
    tengo a precisare che il file è sul server e non sul DB...probabilmente manca il comando che dice dove andare a prendere il file, che adesso in nessun Header è presente!!!

    qulcuno sa aiutarmi?!?!?


  2. #2
    aggiungi anche

    readfile("gestione/upload_files/".$nome_file);

  3. #3
    vedi se puo' tornarti utile
    http://www.devpro.it/php4_id_72.html
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it L'avatar di pyotrex
    Registrato dal
    Feb 2003
    Messaggi
    554
    [supersaibal]Originariamente inviato da andr3a
    vedi se puo' tornarti utile
    http://www.devpro.it/php4_id_72.html
    [/supersaibal]
    Io sto provando la funzione che hai indicato, scusa l'ignoranza, ma che effetto si ottiene anteponendo '&' ad una funzione? So che la @ la rende "silenziosa" ma mi sfugge il significato di &
    Vivrò una vita intera e fortunatamente morirò una volta sola

  5. #5
    [supersaibal]Originariamente inviato da andr3a
    vedi se puo' tornarti utile
    http://www.devpro.it/php4_id_72.html
    [/supersaibal]
    grazie a tutti,
    al moderatore..purtroppo non va con l'aggiunta readfile("gestione/upload_files/".$nome_file); !!
    ad andr3a...ho istallato la funzione, ma ho notato che il codice non entra già nel primo if...ho provato quindi ad annullare il primo controllo, me mi vengono restituiti degli errori di header?!?!?

    io la funzione la invico in questo modo:

    $myFile = 'http://www.miosito.com/file/miofile.pdf';
    forceDownload( $myFile );

    è giusto??


  6. #6
    Utente di HTML.it L'avatar di pyotrex
    Registrato dal
    Feb 2003
    Messaggi
    554
    Io la sto utilizzando da ieri e senza nessuna modifica funziona, non so se puoi passare il percorso del file in quella maniera, verifica inoltre se hai i permessi adeguati sul file.
    Probabilmente quando dici che non entra al primo if ti genera un errore, ed essendoci un header dopo te ne genera uno successivo, perchè non ci devono essere output dopo un header.
    Vivrò una vita intera e fortunatamente morirò una volta sola

  7. #7
    [supersaibal]Originariamente inviato da pyotrex
    Io la sto utilizzando da ieri e senza nessuna modifica funziona, non so se puoi passare il percorso del file in quella maniera, verifica inoltre se hai i permessi adeguati sul file.
    Probabilmente quando dici che non entra al primo if ti genera un errore, ed essendoci un header dopo te ne genera uno successivo, perchè non ci devono essere output dopo un header. [/supersaibal]

    scusate scusate!!! mi sono sbagliato....funziona bene!!! grazie a tutti!!! :rollo:


  8. #8
    A me da questo errore:

    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 206782062 bytes) in /home/addviser/siti/ladetergenza.com/public_html/download.php on line 19


    Il file è un pdf da 200 Mb che devo far scaricare...

  9. #9
    ok ... allora

    vai a leggerti la mia pillola sull'argomento (la trovi tra le pillole)

    dopo di che il problema lo risolvi subitissimo

    $fp = fopen('file', 'rb');
    while(($data = fread($fp, 32*1024)) !== false) {
    echo $data;
    flush();
    }
    fclose($fp);

    in questo modo spedisci il file a chunk di 32kb

    ovviamente prima di entrare in questo ciclo spedisci tutti i vari header e co

    (PS: in pratica va sostituito al readfile, passthgought [o come si scrive] e cosi via)

  10. #10
    Chunk quello dei Goonies?

    Non ho capito niente di quello che hai detto questo script è sbagliato?

    <?
    function forceDownload( &$file ) {
    if( file_exists( $file ) == true && is_readable( $file ) == true ) {
    $filename = &basename( $file );
    if( strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE' ) !== false ) {
    $parsename = &explode( '.', $filename );
    $last = count( $parsename ) - 1;
    $filename = &implode( '%2E', array_slice( $parsename, 0, $last ) );
    $filename .= '.'.$parsename[$last];
    }
    $content = &file_get_contents( $file );
    header( 'Content-Type: application/octet-stream' );
    header( 'Content-Disposition: attachment; filename='.$filename );
    header( 'Content-Length:'.strlen( $content ) );
    header( 'Content-Transfer-Encoding: binary' );
    echo $content;
    exit(0);
    }
    }
    $file = 'catalogo.pdf';
    forceDownload( $file );
    ?>

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 © 2024 vBulletin Solutions, Inc. All rights reserved.