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.

Ti consigliamo anche