PDA

Visualizza la versione completa : Salvare un file da indirizzo IP a locale


colde
22-05-2006, 15:03
Ciao a tutti,
vorrei salvare in locale un file che si trova su una macchina diversa accedendo attraverso un collegamento tramite IP. Mi spiego meglio:
con il client mi collego tramite IP ad un PC in remoto che contiene alcuni files, questi file dovrei salvarli in locale manualmente, l'utente clicca sul testo che corrisponde al nome del file e il sistema dovrebbe copiare il file in locale.

Per ora ho provato così ma non funziona, non da errori ma non salva una mazza:

CopyFile('http://'+indirizzoIP+'/race_data/RACE0008.csv', 'DataRace\NEWNAME.csv', true)

Sapete darmi qualche aiuto?
Grazie

mondobimbi
22-05-2006, 15:19
non puoi farlo così, deve usare o Indy o Synapse, io uso quest'ultima unit ftpsend (se lo fai via ftp)

res := FtpGetFile(host,
'21',
remote_adr ,
locale_adr ,
User,
psw);

ciao
sergio

alka
22-05-2006, 15:19
Se non c'è un Web Server installato su quella macchina, è difficile che tu possa ottenere qualcosa via HTTP.

La CopyFile lavora a livello di file system, non preleva file usando il protocollo HTTP.

Ciao! :ciauz:

Nikk11
22-05-2006, 15:27
Lo puoi fare trasferendo via TCP/IP senza http o FTP... Indy ha un metodo "writeBuffer" o qualcosa del genere con cui puoi spedire dati in generale.
Io l'ho fatto una volta ma adesso nn ti so dire che metodo avevo utilizzato. :confused:

Ciao :ciauz: :ciauz:

alka
22-05-2006, 15:29
Originariamente inviato da Nikk11
Lo puoi fare trasferendo via TCP/IP senza http o FTP... Indy ha un metodo "writeBuffer" o qualcosa del genere con cui puoi spedire dati in generale.
Io l'ho fatto una volta ma adesso nn ti so dire che metodo avevo utilizzato. :confused:

Lo puoi fare solo se dall'altra parte c'è un server HTTP, FTP o "custom" in ascolto.

colde
22-05-2006, 15:33
il Server HTTP dovrebbe esserci, l'FTP no. Potete dirmi il giusto metodo? Almeno provo.

alka
22-05-2006, 16:52
Originariamente inviato da colde
il Server HTTP dovrebbe esserci, l'FTP no. Potete dirmi il giusto metodo? Almeno provo.
Non è possibile prelevare un file specificando l'indirizzo fisico. Avendo a disposizione un server HTTP, è necessario creare un sito o predisporre una directory virtuale in cui memorizzare il file.

Se indicando l'indirizzo del sito unitamente al percorso del file da scaricare relativo alla radice (la directory a cui fa riferimento il sito) all'interno di un browser (IE o Firefox), il file viene scaricato, sarà possibile fare la stessa cosa anche con qualsiasi componente o libreria sia in grado di inoltrare una richiesta di GET ad un server HTTP e memorizzare la risposta (in questo caso, il file); ad esempio, usando il componente TIdHTTP.

colde
22-05-2006, 16:54
Provo a specificare meglio il problema:

ho un file txt che contiene diversi dati tra cui il nome del rispettivo file CSV; ogni riga presente nel file txt corrisponde ad un file CSV e il mio obiettivo è recuperare tutte le righe dal file txt inserendole in una StringGrid. Questa StringGrid è formata da due colonne e da N righe; quest'ultime vengono generate automaticamente in base al numero delle righe presenti nel file txt. Una colonna della StringGrid quindi contiene ogni singola riga del file txt mentre la seconda colonna dovrebbe contenere un link per scaricare il file CSV relativo oppure per cancellarlo.

L'elenco delle righe presenti nel file txt le ho già caricate nella StringGrid ma la creazione del link per scaricare o eliminare il file CSV è ancora in alto mare. I file CSV dovranno rimanere integri così come sono poichè verranno utilizzati per importare i dati in un DB.

colde
22-05-2006, 16:56
Originariamente inviato da alka
Non è possibile prelevare un file specificando l'indirizzo fisico. Avendo a disposizione un server HTTP, è necessario creare un sito o predisporre una directory virtuale in cui memorizzare il file.

Se indicando l'indirizzo del sito unitamente al percorso del file da scaricare relativo alla radice (la directory a cui fa riferimento il sito) all'interno di un browser (IE o Firefox), il file viene scaricato, sarà possibile fare la stessa cosa anche con qualsiasi componente o libreria sia in grado di inoltrare una richiesta di GET ad un server HTTP e memorizzare la risposta (in questo caso, il file); ad esempio, usando il componente TIdHTTP.

Infatti ho usato IdHTTP.Get per prelevare il file e visualizzarlo in un label (solo come prova) ma a me servirebbe salvarlo come file CSV in locale senza modificarne il contenuto nè la forma.

alka
22-05-2006, 16:59
Ho capito pressapoco ciò che l'applicazione deve fare, ma se i file su cui devi lavorare non sono raggiungibili attraverso una condivisione di rete bensì tramite HTTP, ci deve essere un server che accetta le richieste HTTP e le elabora di conseguenza, ad esempio restituendo il file richiesto o provvedendo alla sua cancellazione.

Loading