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

    Problemi Progressbar Upload FTP

    Ciao a tutti....
    Ho qualche problemino a far funzionare un semplicissimo script:
    Codice PHP:
    <?php

        $ftp
    =ftp_connect ("ftp.marsicano.org") or die ("NO connessione con host");
        
    ftp_login ($ftp,"ciao@marsicano.org","ciao") or die ("NO login");
        
        
    $file="file.txt";
        
    $fs filesize($file);
        
    define('FTP_CHUNK_SIZE'intval($fs 0.1) ); // upload ~10% per iteration

        
    $localfile fopen($file,'rb');

        
    $i 0;
        while( 
    $i $fs ) {
            
    $tmpfile fopen('tmp_ftp_upload.bin','ab');
            
    fwrite($tmpfilefread($localfileFTP_CHUNK_SIZE));
            
    fclose($tmpfile);

            
    ftp_put($ftp'remote_file.bin''tmp_ftp_upload.bin'FTP_BINARY$i);
            
    // Remember to put $i as last argument above

            
    $progress = (100 round( ($i += FTP_CHUNK_SIZE)  / $fs));
            
    file_put_contents('ftp_progress.txt'"Progress: {$progress}%");
        }
        
    fclose($localfile);
        
    unlink('ftp_progress.txt');
        
    unlink('tmp_ftp_upload.bin'); // delete when done

        //And file to check with ajax:

        
    if (file_exists('ftp_progress.txt'))
            echo 
    file_get_contents('ftp_progress.txt');
        else
            echo 
    'Progress: 0%';
        exit;
    ?>
    L'idea è quella di creare un qualcosa che, dato un file in ingresso, lo carichi tramite FTP e mostri anche lo stato corrente.
    Il problema è che scrivere sempre e solo:
    codice:
    Progress: 0%
    Consigli?? Aiuti???
    Grazie 1000

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mah... salvo l'algoritmo (che non ho controllato) e da come si evince dai commenti, potrebbe funzionare se usi ajax... in php aggiorni un file (un .txt potrebbe andar bene) e via ajax da un'altra pagina leggi tale file... se già fai così magari il problema è con ajax (cmq io nel txt metterei solo il valore numerico)

  3. #3
    mmm
    Lo script non è mio, ovviamente, l'ho trovato in rete... E non c'era nessuna parte in AJAX
    Mi aiutereste, please??

    Grazie 1000

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    C'è un commento che dice "//And file to check with ajax"... in pratica lo script php esegue tutto l'upload e ALLA FINE stampa l'ultima riga (quindi tu vedi sempre "0%" o il contenuto del file di progresso).... devi usare UN ALTRO script (che visualizzerà l'utente) che legge il contenuto del file di progresso (aggiornato in tempo reale DURANTE l'esecuzione del primo script) a intervalli regolari e mostra il progresso in corso.

  5. #5
    ah... Ho capito...
    Potresti farmi un esempio di codice stupido stupido??
    Una cosa di questo tipo, potrebbe andare bene??
    Codice PHP:
    var XMLHttpRequestObject false
    XMLHttpRequestObject = new XMLHttpRequest(); 

    <!-- 
    function 
    loadHostFile(dataSourcedivID

        if(
    XMLHttpRequestObject) { 
            var 
    obj document.getElementById(divID); 

            
    XMLHttpRequestObject.open("GET"dataSourcetrue); 
            
    XMLHttpRequestObject.onreadystatechange = function() 
            { 
                if (
    XMLHttpRequestObject.readyState == && XMLHttpRequestObject.status==200) { 
                    
    obj.innerHTML '<textarea name="hostfilecontent" cols="75" rows="10" id="hostfilecontent">'+XMLHttpRequestObject.responseText+'</textarea>'
                } 
            } 
            
    XMLHttpRequestObject.send(); 
        } 
    }

    [.....]

    <
    input name="loadHFile" type="button" id="loadHFile" value="{LOAD_HOSTFILE}" onClick="loadHostFile('ftp_progress.txt','hostfile')"
    AJAX, purtroppo, non lo conosco molto...
    Grazie 1000

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Per AJAX... ti consiglio di usare qualche libreria pronta (eventualmente p.es. il pacchetto jQuery).

  7. #7
    ho creato un file .php che contiene:
    Codice PHP:
    <?php

        $ftp
    =ftp_connect ("ftp.***.org") or die ("NO connessione con host");
        
    ftp_login ($ftp,***@***.org","***") or die ("NO login");
        
        
    $file="file.txt";
        
    $fs = filesize($file);
        define('FTP_CHUNK_SIZE', intval(
    $fs * 0.1) ); // upload ~10% per iteration

        
    $localfile = fopen($file,'rb');

        
    $i = 0;
        while( 
    $i < $fs ) {
            
    $tmpfile = fopen('tmp_ftp_upload.bin','ab');
            fwrite(
    $tmpfile, fread($localfile, FTP_CHUNK_SIZE));
            fclose(
    $tmpfile);

            ftp_put(
    $ftp, 'remote_file.bin', 'tmp_ftp_upload.bin', FTP_BINARY, $i);
            // Remember to put 
    $i as last argument above

            
    $progress = (100 * round( ($i += FTP_CHUNK_SIZE)  / $fs, 2 ));
            file_put_contents('ftp_progress.txt', "
    Progress: {$progress}%");
        }
        fclose(
    $localfile);
        unlink('ftp_progress.txt');
        unlink('tmp_ftp_upload.bin'); // delete when done

        //And file to check with ajax:

        if (file_exists('ftp_progress.txt'))
            echo file_get_contents('ftp_progress.txt');
        else
            echo 'Progress: 0%';
        exit;
    ?>
    <html>
        <head>
            <script type="
    text/javascript">
                var XMLHttpRequestObject = false; 
                XMLHttpRequestObject = new XMLHttpRequest(); 

                function loadHostFile (dataSource, divID) { 
                        if (XMLHttpRequestObject) { 
                        var obj = document.getElementById(divID); 

                        XMLHttpRequestObject.open("
    GET", dataSource, true); 
                        XMLHttpRequestObject.onreadystatechange = function() 
                        { 
                            if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status==200) { 
                                obj.innerHTML = '<textarea name="
    hostfilecontent" cols="75" rows="10" id="hostfilecontent">'+XMLHttpRequestObject.responseText+'</textarea>'; 
                            } 
                        } 
                        XMLHttpRequestObject.send(); 
                    } 
                }
            </script>
        </head>
        <body onLoad="
    loadHostFile('ftp_progress.txt','hostfile')">
        </body>
    </html>
    Ma non va
    Parte il caricamento, ma io non vedo nulla...

    Grazie 1000

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mmmh... come ti ho detto devi usare DUE file differenti: uno fa l'upload ed aggiorna periodicamente il ".txt", l'altro con AJAX legge il file e visualizza il progresso

  9. #9
    oh mamma...
    Ho provato, ma non riesco a capire...
    Come posso lanciare lo script PHP che carica il file e, contemporaneamente, visualizzare un'altra pagina che visualizzi il contenuto del file??
    Lo script AJAX che ho postato, è almeno giusto?

    Grazie 1000

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.