Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: [DELPHI] download file

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    51

    [DELPHI] download file

    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

  2. #2

    Re: [DELPHI] download file

    Originariamente inviato da ElyFly

    Devo utilizzare i componenti Indy?
    Esatto!

    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.


  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    51
    bene, ma... che funzione devo chiamare per effettuare veramente il download??
    Thx

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    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...

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    51
    ... 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??

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    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...

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    51
    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...

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    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...

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    51
    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;
    -----------------------------------------


  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Ti posto il codice con qualche modifica e aggiustamento:
    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;
    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.

    Ad ogni modo, la creazione corretta di un componente andrebbe fatta in questo modo:
    codice:
    IdHttp := TIdHttp.Create(nil);
    try
      // ...operazioni con TIdHttp
    finally
      IdHttp.Free;
    end;
    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.