Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 7 di 32
  • livello principiante
Indice lezioni

FTP e open-uri

Operare con i file in remoto
Operare con i file in remoto
Link copiato negli appunti

Il protocollo FTP è implementato dalla classe Net::FTP della libreria "net/ftp" che offre oltre ai comandi standard altre utili funzionalità.

require 'net/ftp'

ftp = Net::FTP.new('ftp.example.com')
ftp.login
ftp.chdir('pub/')
ftp.list('*') {|file| puts file}
ftp.gettextfile('README')
ftp.getbinaryfile('software.gz')
ftp.close

Apriamo la connessione passando l'indirizzo a new, poi effettuiamo il login, si noti che chiamando login senza argomenti si esegue un accesso anonimo, per accedere come utente vanno specificate le credenziali di accesso: username e password

ftp.login('admin', 'secret')

Dopodiché effettuaimo delle operazioni utilizzando i metodi chdir e list che eseguono gli omonimi comandi FTP. Infine utilizziamo entrambi i metodi get per scaricare un file di testo e un file binario; per caricare i file sul server vanno utilizzati i rispettivi metodi put: putbinaryfile e puttextfile.

In alternativa, per aprire una connessione, è possibile usare open con un blocco in questo modo:

Net::FTP.open('ftp.example.com') do |ftp|
  ftp.login
  ftp.list('*')
end

Nella prossima lezione esamineremo una libreria che rappresenta una valida alternativa a Net::HTTP e a Net::FTP.

open-uri

Essenzialmente la libreria open-uri estende il metodo open permettendo di passare come file da aprire una stringa contenente un URL HTTP o FTP. Inoltre sono applicabili all'oggetto restituito alcuni utili metodi e attributi che forniscono informazioni sulla richiesta effettuata aperta, come ad esempio charset, content_encoding, content_type, last_modified, base_uri, meta e status. Un esempio è il seguente:

require 'open-uri' 

open('http://www.google.it') do |res|
   res.meta.each {|k,v| puts "#{k}: #{v}"}
end

Il risultato sarà qualcosa del genere:

cache-control: private
content-type: text/html; charset=ISO-8859-1
date: Mon, 13 Aug 2007 10:52:48 GMT
server: gws
transfer-encoding: chunked

L'attributo meta è un hash che rappresenta l'header. Invece per mostrare il contenuto della pagina si può utilizzare il metodo read oppure gets nel modo opportuno.

Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto:

Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.

Ti consigliamo anche