Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Discussione: Download di files gz

  1. #11
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Come no? L'esempio che ho messo io scarica da FTP dove ho accessso e crea il file nella stessa cartella dove ho lo script che esgue.
    Mi sorge un dubbio. Lo script che legge da ftp è in remoto? e gli dai un percorso dove salvare su altro server?
    In questo caso potrebbe essere questo il problema. Se gli dici di scaricare su un PATH ovviamente sarà sullo stesso server dove esegui e non in locale.
    Se esegui da remoto e vuoi scaricare in locale o comunque altrove puoi usare ftp-fget() che legge e poi salva su un file aperto.
    Che sarà quindi una risorsa indicata da te.

  2. #12
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Come no? L'esempio che ho messo io scarica da FTP dove ho accessso e crea il file nella stessa cartella dove ho lo script che esgue.
    Mi sorge un dubbio. Lo script che legge da ftp è in remoto? e gli dai un percorso dove salvare su altro server?
    In questo caso potrebbe essere questo il problema. Se gli dici di scaricare su un PATH ovviamente sarà sullo stesso server dove esegui e non in locale.
    Se esegui da remoto e vuoi scaricare in locale o comunque altrove puoi usare ftp-fget() che legge e poi salva su un file aperto.
    Che sarà quindi una risorsa indicata da te.
    Il file backup.php è sul mio sito nella cartella principale e per chiamarloio faccio www.niosito.com/backup.php
    I file da downloadare sono i backup.gz appena fatti e che hanno tanti nomi che io non posso usare fget perchè in locale non li ho ancora in quanto appunto sono nella directory www.miosito.com/backups.
    I nomi dei backups non li conosco perchè sono costruiti in base all'orario in cui sono stati fatti

  3. #13
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Hai lo script intero da postare tipo quello che ti avevo messo io?
    Se il mi esempio funziona senza problemi evidentemente c'è qualcosa di strano.
    PS
    I nomi di file non interessano e nemmeno averli in locale. I nomi li recuperi con ftp_get e li puoi salvare ex novo in locale.
    Se lo script sta sul sito, e gli fai leggere via FTP file sullo stesso sito, per forza di cose te li salverà sullo stesso sito. Se li devi scariare su altro server o locale devi usare l'altra funzione indicata prima. Qualsiasi path e non url corrisponde alle stesso server dove sta girando.

  4. #14
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Usandolo sul server locale Questo funziona benissimo ma mette i files downloadati nella directory htdocs in mezzo ai file php
    Molto più rapido comodo e preciso filezilla ma comunque è stata una bella esperienza

    <code>
    <?php
    $dir="backups";
    $ftp_host=FTP_HOST;
    $ftp_user=FTP_USER;
    $ftp_pass=FTP_PASS;

    // *** Include the class
    //include('ftp_class.php');

    // *** Create the FTP object
    $ftpObj = new FTPClient($ftp_host,$ftp_user,$ftp_pass);

    // *** Connect
    if ($ftpObj -> connect()) {

    // *** Then add FTP code here

    echo 'connected';

    } else {
    echo 'Failed to connect';
    }
    echo "<br>".$ftpObj->pwd();


    // *** Change to folder
    $ftpObj->cd('public_html/'.$dir.'/');

    echo "<br>".$ftpObj->pwd();
    // *** Get folder contents
    $contentsArray = $ftpObj->ls();

    // *** Output our array of folder contents
    echo '<pre>';
    print_r($contentsArray);


    $fileFrom = $ftpObj->pwd().'/'.$contentsArray[7];# The location on the server
    $fileTo = $contentsArray[6]; # Local dir to save to




    // *** Download file
    $ftpObj->get($fileTo,$contentsArray[3]);
    $ftpObj->close();


    Class FTPClient
    {
    /**
    // Simple FTP Class
    /**
    * FTP host
    *
    * @var string $_host
    */
    private $_host;
    /**
    * FTP port
    *
    * @var int $_port
    */
    private $_port = 21;
    /**
    * FTP password
    *
    * @var string $_pwd
    */
    private $_pwd;

    /**
    * FTP stream
    *
    * @var resource $_id
    */
    private $_stream;
    /**
    * FTP timeout
    *
    * @var int $_timeout
    */
    private $_timeout = 90;
    /**
    * FTP user
    *
    * @var string $_user
    */
    private $_user;
    /**
    * Last error
    *
    * @var string $error
    */
    public $error;
    /**
    * FTP passive mode flag
    *
    * @var bool $passive
    */
    public $passive = false;
    /**
    * SSL-FTP connection flag
    *
    * @var bool $ssl
    */
    public $ssl = false;
    /**
    * System type of FTP server
    *
    * @var string $system_type
    */
    public $system_type;
    /**
    * Initialize connection params
    *
    * @param string $host
    * @param string $user
    * @param string $password
    * @param int $port
    * @param int $timeout (seconds)
    */
    public function __construct($host = null, $user = null, $password = null, $port = 21, $timeout = 90) {
    $this->_host = $host;
    $this->_user = $user;
    $this->_pwd = $password;
    $this->_port = (int)$port;
    $this->_timeout = (int)$timeout;
    }
    /**
    * Auto close connection
    */
    public function __destruct() {
    $this->close();
    }
    /**
    * Change currect directory on FTP server
    *
    * @param string $directory
    * @return bool
    */
    public function cd($directory = 'backups') {
    // attempt to change directory
    if(ftp_chdir($this->_stream, $directory)) {
    // success
    return true;
    // fail
    } else {
    $this->error = "Failed to change directory to \"{$directory}\"";
    return false;
    }
    }
    /**
    * Set file permissions
    *
    * @param int $permissions (ex: 0644)
    * @param string $remote_file
    * @return false
    */
    public function chmod($permissions = 0, $remote_file = null) {
    // attempt chmod
    if(ftp_chmod($this->_stream, $permissions, $remote_file)) {
    // success
    return true;
    // failed
    } else {
    $this->error = "Failed to set file permissions for \"{$remote_file}\"";
    return false;
    }
    }
    /**
    * Close FTP connection
    */
    public function close() {
    // check for valid FTP stream
    if($this->_stream) {
    // close FTP connection
    ftp_close($this->_stream);
    // reset stream
    $this->_stream = false;
    }
    }
    /**
    * Connect to FTP server
    *
    * @return bool
    */
    public function connect() {
    // check if non-SSL connection
    if(!$this->ssl) {
    // attempt connection
    if(!$this->_stream = ftp_connect($this->_host, $this->_port, $this->_timeout)) {
    // set last error
    $this->error = "Failed to connect to {$this->_host}";
    return false;
    }
    // SSL connection
    } elseif(function_exists("ftp_ssl_connect")) {
    // attempt SSL connection
    if(!$this->_stream = ftp_ssl_connect($this->_host, $this->_port, $this->_timeout)) {
    // set last error
    $this->error = "Failed to connect to {$this->_host} (SSL connection)";
    return false;
    }
    // invalid connection type
    } else {
    $this->error = "Failed to connect to {$this->_host} (invalid connection type)";
    return false;
    }
    // attempt login
    if(ftp_login($this->_stream, $this->_user, $this->_pwd)) {
    // set passive mode
    ftp_pasv($this->_stream, (bool)$this->passive);
    // set system type
    $this->system_type = ftp_systype($this->_stream);
    // connection successful
    return true;
    // login failed
    } else {
    $this->error = "Failed to connect to {$this->_host} (login failed)";
    return false;
    }
    }
    /**
    * Delete file on FTP server
    *
    * @param string $remote_file
    * @return bool
    */
    public function delete($remote_file = null) {
    // attempt to delete file
    if(ftp_delete($this->_stream, $remote_file)) {
    // success
    return true;
    // fail
    } else {
    $this->error = "Failed to delete file \"{$remote_file}\"";
    return false;
    }
    }
    /**
    * Download file from server
    *
    * @param string $remote_file
    * @param string $local_file
    * @param int $mode
    * @return bool
    */
    public function get($remote_file = null, $local_file = null, $mode = FTP_ASCII) {
    // attempt download
    if(ftp_get($this->_stream, $local_file, $remote_file, $mode)) {
    // success
    echo "I download file: ".$local_file;
    return true;
    // download failed
    } else {
    $this->error = "Failed to download file \"{$remote_file}\"";
    return false;
    }
    }
    /**
    * Get list of files/directories in directory
    *
    * @param string $directory
    * @return array
    */
    public function ls($directory = null) {
    $list = array();
    // attempt to get list
    if($list = ftp_nlist($this->_stream, $directory)) {
    // success
    return $list;
    // fail
    } else {
    $this->error = "Failed to get directory list";
    return array();
    }
    }
    /**
    * Create directory on FTP server
    *
    * @param string $directory
    * @return bool
    */
    public function mkdir($directory = null) {
    // attempt to create dir
    if(ftp_mkdir($this->_stream, $directory)) {
    // success
    return true;
    // fail
    } else {
    $this->error = "Failed to create directory \"{$directory}\"";
    return false;
    }
    }
    /**
    * Upload file to server
    *
    * @param string $local_path
    * @param string $remote_file_path
    * @param int $mode
    * @return bool
    */
    public function put($local_file = null, $remote_file = null, $mode = FTP_ASCII) {
    // attempt to upload file
    if(ftp_put($this->_stream, $remote_file, $local_file, $mode)) {
    // success
    return true;
    // upload failed
    } else {
    $this->error = "Failed to upload file \"{$local_file}\"";
    return false;
    }
    }
    /**
    * Get current directory
    *
    * @return string
    */
    public function pwd() {
    return ftp_pwd($this->_stream);
    }
    /**
    * Rename file on FTP server
    *
    * @param string $old_name
    * @param string $new_name
    * @return bool
    */
    public function rename($old_name = null, $new_name = null) {
    // attempt rename
    if(ftp_rename($this->_stream, $old_name, $new_name)) {
    // success
    return true;
    // fail
    } else {
    $this->error = "Failed to rename file \"{$old_name}\"";
    return false;
    }
    }
    /**
    * Remove directory on FTP server
    *
    * @param string $directory
    * @return bool
    */
    public function rmdir($directory = null) {
    // attempt remove dir
    if(ftp_rmdir($this->_stream, $directory)) {
    // success
    return true;
    // fail
    } else {
    $this->error = "Failed to remove directory \"{$directory}\"";
    return false;
    }
    }
    }
    ?>
    </code>

  5. #15
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ho modificato solo questa parte in locale.
    codice:
    foreach($contentsArray as $file){
    	// *** Download file
    	
    	$fileTo = dirname(__FILE__).'/dload/'.$file; //destinazione file da scaricare - percorso locale completo
    	$fileFrom = '/path/'; //percorso (path) del server ftp dove prendere i file
    	$ftpObj->get($fileFrom . $file,$fileTo);
    	$ftpObj->close();
    }
    Già così funziona, scarica correttamente i file da FTP e li mette dove indicato in locale
    Queto script lo lancio in locale

  6. #16
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Così comincia ad essere perfetto
    Grazie è stata veramente un post molto utile grazie a te

    foreach($contentsArray as $file){
    if (is_dir($file))
    {continue;}
    // *** Download file

    $fileTo = dirname(__FILE__).'/backups/'.$file; //destinazione file da scaricare - percorso locale completo
    $fileFrom = $ftpObj->pwd().'/'; //percorso (path) del server ftp dove prendere i file
    $ftpObj->get($fileFrom . $file,$fileTo);
    $ftpObj->close();
    }

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.