Salve a tutti!
Come faccio a fare il download di un file da una pagina web, quando questa viene aperta (oppure, quando viene cliccato un link)?
Devo utilizzare i componenti Indy?
grazie
Eli
Salve a tutti!
Come faccio a fare il download di un file da una pagina web, quando questa viene aperta (oppure, quando viene cliccato un link)?
Devo utilizzare i componenti Indy?
grazie
Eli
Esatto!Originariamente inviato da ElyFly
Devo utilizzare i componenti Indy?
Dal mio punto di vista, se devi solo fare il download di un determinato file puoi usare il protocollo TCP per il trasporto dei dati.
Altrimenti usi il classico HTTP.
![]()
bene, ma... che funzione devo chiamare per effettuare veramente il download??![]()
Thx
Il componente TIdHttp possiede un metodo Get che consente di specificare l'URL dal quale scaricare un file.
Per ulteriori informazioni, consulta la Guida in linea dei componenti Indy.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
... io ho provato ad usarlo, ma... non ho capito che parametri devo passargli:
io gli passo come primo argomento l'url da dove dovrà scaricare il file e come secondo un filestream???? e qst filestream rappresenterebbe il mio file? e dove me lo copierebbe??
Se non ricordo male, quando crei un'istanza di TFileStream, devi specificare il nome del file, o meglio il percorso completo.
In alternativa, puoi usare un TMemoryStream per immagazzinare in memoria il contenuto del file; attraverso il metodo SaveToFile, successivamente puoi salvare su disco i dati ottenuti.
Indipendentemente dal tipo di Stream che utilizzi per immagazzinare il file scaricato, tale oggetto va passato come secondo parametro del metodo.
Il primo parametro rappresenta l'URL del file da scaricare; ad esempio, http://miodominio/percorso/nomefile.estensione.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Allora, ditemi se sbaglio:
e se usassi la funzione CopyFileTo(filesrc, filedest)...?
il filesrc è quello sul server e il filedest è quello che creo in locale.....
può essere..? a me nn convince molto, però non riesco a fare altrimenti...
Perche non usi il metodo Get del componente? Quale errore ottieni? Cosa non riesci a fare?
A volte ho l'impressione che, quando scrivi, tu voglia imporre una soluzione a chi ti risponde piuttosto che seguire i suggerimenti.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
No no, assolutamente, altrimenti non continuerei nemmeno a postare.... è che con il metodo get non mi succede assolutamente nulla....
ho provato sia con i TFileStream che con i TMemoryStream.....
ti mando un pezzo del codice così mi dici dove cano:
-----------------------------------------
var
obj: TIdHTTP;
M: TMemoryStream;
begin
M := TMemoryStream.Create();
obj.Create(obj);
obj.Get('url\edna.gif', M);
M.SaveToFile('C:\edna.gif');
end;
-----------------------------------------
![]()
Ti posto il codice con qualche modifica e aggiustamento:
Inoltre, ho visto che generi dinamicamente anche il componente TIdHttp: io ti suggerirei di inserirlo nel form attraverso la Palette dei Componenti e accertandoti che le proprietà essenziali siano impostate.codice:var ms: TMemoryStream; begin ms := TMemoryStream.Create; try IdHTTP.Get('url', ms); ms.Position := 0; ms.SaveToFile('nome.estensione'); finally ms.Free; end; end;
Ad ogni modo, la creazione corretta di un componente andrebbe fatta in questo modo:
Ciao!codice:IdHttp := TIdHttp.Create(nil); try // ...operazioni con TIdHttp finally IdHttp.Free; end;![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...