Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    10

    [PHP] Salvataggio file su disco

    Salve a tutti! Ho un problema con una funzione per salvataggio di file su disco. I file in questione sono file immagine JPEG e TIFF e ne è richiesto il download tramite tipica finestra-popup "apri - salva - annulla" come un qualsiasi file binario. incollo la funzione salva:

    Codice PHP:
    <?php

    //funzione salva con nome
    function salva($path$name$ext){
    $ip_add=$_SERVER["SERVER_ADDR"];
    $name=str_replace(" ""%20"$name);
    $filename "http://$ip_add$name";
    $basename basename ($filename);
        
    header ("Pragma: public");
    header ("Expires: 0");
    header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header ("Cache-Control: private"false);
    header ("Content-Type: application/force-download");
    header ("Content-Disposition: attachment; filename=\"".$basename."\"");
    header ("Content-Description: File Transfer");
    header ("Content-Transfer-Encoding: binary");
        
    set_time_limit (0);
        
    @
    readfile ($filename);
        
    exit (
    0);
    }

        
    ?>
    Questa funzione fa quello che è richiesto e tutto funziona perfettamente fino a file di una certa dimensione! ora non ricordo esattamente la dimensione precisa.. ma diciamo che per file fino a 60-70 MB fila tutto liscio.. per file più pesanti, il download si blocca su tale soglia e non va più avanti! non c'è verso di completare questi download più pesanti.. (ci sono alcune .tif che arrivano a pesare 500MB).
    Aggiungo un'ultima cosa: la riga
    Codice PHP:
    header ("Content-Length: " filesize ($filename)); 
    non è presente, perchè aggiungendola i download non funzionavano..

    qualcuno sa da cosa può dipendere??
    vi prego.. un'anima pia mi dia una mano ^_^

  2. #2
    Controlla il log degli errori e prova a sostituire readfile() con fopen(), un ciclo di fread() e fclose()

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    10
    rettifico, la dimensione precisa alla quale si blocca il download è 31,49 MB..
    come le uso quelle funzioni in questo contesto?.. mica saresti così gentile da buttar giù 2 righe?

    edit: poi dove trovo il log degli errore? (come web server uso xampp) e cmq grazie mille per avermi risposto!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    10
    ho scoperto che tutta la situazione dipende dal parametro "memory_limit" nel file php.ini, ma anche settando questo limite a -1 (ovvero senza limite) i download funzionano per file grandi fino a 130 MB circa.. per quelli più grandi, dopo un lungo caricamento e grande uso di ram e cpu, o mi restituisce l'errore seguente (Fatal error: Out of memory (allocated 333709312) (tried to allocate 333185024 bytes)) oppure esce fuori una pagina completamente bianca con su scritto, in alto a sinistra, solo "0"
    boh... questo ulteriore limite sembra tanto che dipenda dal mio computer... pur avendo 2 GB di ram e abbondante memoria virtuale, php non riesce ad allocarmi più di quel tot di memoria? se avessi 4 GB sarebbe diverso quindi?
    ogni idea è gradita, grazie!

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.