Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Download di files gz

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333

    Download di files gz

    Ciao a tutti,
    volevo creare un ftp per portarmi in locale alcuni files di backup di tipo .gz
    Lo script funziona perfettamente fino a ftp_get
    Questo è lo script:

    <?php

    $local_file = 'C:\Users\bull\Documents\web site\town\backups';
    $server_file = '/home/mark/public_html/backups';
    $ftp_user="xyz";
    $ftp_pass="aaaaaaaaaaa";
    $ftp_server="server.net.net";
    // set up a connection or die
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

    // try to login
    if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    echo "Connected as $ftp_user@$ftp_server<br> successfully";
    } else {
    echo " connect falled as $ftp_user\n";
    }

    // Fino qui funziona bene

    //adesso creo un array con i nomi dei file da downloadare

    $server_dir="public_html/backups";
    $contents = ftp_nlist($conn_id, $server_dir);


    // l'array $contents contiene per� anche i nomi di fiiles che io non voglio downloadare o che addirittura mi fanno errore quando tento il download come . e ...
    Gli unici files che voglio trasportare in loxcale sono gli archivi .gz

    // di conseguenza ftp_get fa errore.



    foreach ($contents as $file) {


    if (ftp_get($conn_id, $local_dir."/".$file, $server_dir."/".$file, FTP_ASCII)) {
    echo " amd Successfully written to $local_file\n";
    } else {
    echo " but There was a problem in download<br>".$server_dir."/".$file."<br>";
    }
    }

    La domanda è:
    Se l'errore è solo nell'array $content come passo a ftp_get i soli nomi dei files.gz all'interno della funzione foreach ?
    Grazie


    PS
    Ultima modifica di jomla; 11-11-2016 a 10:43

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, se il problema sta solo nel tipo di file che non vuoi scaricare puoi aggiungere semplicemente un controllo sul nome del file nel ciclo.
    codice:
    foreach ($contents as $file) {
       if(substr($file, -3) != '.gz') continue;
    
       //...resto del codice
    }
    In questo modo se il nome del file non finisce per .gz il ciclo salta al passaggio successivo.
    Si può scrivere meglio o con più controlli a seconda di cosa ritorna la lista (che non vedo) ma già così potresti risolvere

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Ciao, se il problema sta solo nel tipo di file che non vuoi scaricare puoi aggiungere semplicemente un controllo sul nome del file nel ciclo.
    codice:
    foreach ($contents as $file) {
       if(substr($file, -3) != '.gz') continue;
    
       //...resto del codice
    }
    In questo modo se il nome del file non finisce per .gz il ciclo salta al passaggio successivo.
    Si può scrivere meglio o con più controlli a seconda di cosa ritorna la lista (che non vedo) ma già così potresti risolvere
    Fatto......
    Ma il problema più grande adesso è che ftp_get non trova il file remoto.
    Io credevo che fosse a causa della presenza dei punto o dei 2 punti all'interno di $ contents ma adesso verdo che non trova neppure il file il cui percorso è perfetto

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Se provi a visualizzare con print_r($contents); prima del foreach dovresti avere tutta la lista ritornata dal ftp_nlist().
    La lista è corretta? Cosa contiene?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Se provi a visualizzare con print_r($contents); prima del foreach dovresti avere tutta la lista ritornata dal ftp_nlist().
    La lista è corretta? Cosa contiene?
    la lista è corretta e contiene
    .
    ..
    file.gz
    file2.gz
    file3.gz
    Tutto perfetto poi ftp_get fa errore
    Warning: ftp_get(C:/backups/Imola-20161105-1747.gz): failed to open stream: No such file or directory in /home/icqicqicq/public_html/backup.php on line 47

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    L'errore che vedo mi pare più un errore relativo ad un file che non esiste o sbaglio? e comunque questo è un warning, lo script dovrebbe continuare ad ogni modo.
    La modifica fatta sopra non modifica il nome del file, dovrebbe solo saltare i file che non hanno come parte finale del nome .gz .

    Facendo un echo di $file dopo il controllo, dovresti vedere solo la lista dei file .gz

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    L'errore che vedo mi pare più un errore relativo ad un file che non esiste o sbaglio? e comunque questo è un warning, lo script dovrebbe continuare ad ogni modo.
    La modifica fatta sopra non modifica il nome del file, dovrebbe solo saltare i file che non hanno come parte finale del nome .gz .

    Facendo un echo di $file dopo il controllo, dovresti vedere solo la lista dei file .gz
    Hop rovato a downloadare un solo file specifico che sono sicurissimo che c'è
    Il warning è:Warning: ftp_get(): Can't open C:/backups/Imola-20161105-1747.gz: No such file or directory in /home/wcvwcvwcv/public_html/ ftp.php on line 51
    Quindi è l'indirizzo in locale che fa errore?

  8. #8
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ho provato questo in locale
    codice:
    $local_file = dirname(__FILE__).'/test.mp4';
    $server_file = '/PATH/prova.mp4';
    $ftp_user="USERNAME";
    $ftp_pass="PASS";
    $ftp_server="HOST";
    // set up a connection or die
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
    
    
    // try to login
    if (ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    	echo "Connected as $ftp_user@$ftp_server<br> successfully";
    } else {
    	echo " connect falled as $ftp_user\n";
    }
    
    
    if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    	echo "Successfully written to $local_file\n";
    } else {
    	echo "There was a problem\n";
    }
    E Funziona correttamente. Mi scarica il file remoto.

    Prova a cambiare il file locale per test. Magari al posto di dare un path specifico metti in $local_file quello che ho messo io (nome file a parte). Se tutto ok te lo salverà nella cartella dello script stesso.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Ho provato questo in locale
    codice:
    $local_file = dirname(__FILE__).'/test.mp4';
    $server_file = '/PATH/prova.mp4';
    $ftp_user="USERNAME";
    $ftp_pass="PASS";
    $ftp_server="HOST";
    // set up a connection or die
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
    
    
    // try to login
    if (ftp_login($conn_id, $ftp_user, $ftp_pass)) {
        echo "Connected as $ftp_user@$ftp_server<br> successfully";
    } else {
        echo " connect falled as $ftp_user\n";
    }
    
    
    if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
        echo "Successfully written to $local_file\n";
    } else {
        echo "There was a problem\n";
    }
    Prova a cambiare il file locale per test. Magari al posto di dare un path specifico metti in $local_file quello che ho messo io (nome file a parte). Se tutto ok te lo salverà nella cartella dello script stesso.
    Ci sono dei progressi.
    Adesso fa il download ma mi mette i file.gz in mezzo ai file. programma ma non nel mio pc ma nel server remoto.
    In pratica gli cambia cartella
    Lo script che fa questo usa $fileTo="nome del file.gz"
    $fileFrom = pwd().'/'.$contentsArray[2];

    Quindi il $fileFrom funziona ma il $fileTo pasticca e punta alla cartella public_html remota

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Comunque da quello che leggo in giro non si può downloadare in una cartella in locale sul nostro PC un file con ftp_get mancando la possibilità di indirizzare verso una cartella qualsiasi del nostro pc
    Ultima modifica di jomla; 17-11-2016 a 14:36

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.