Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Download Files
Forum - C# / VB.NET - [C#] Download Files

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Ciao.

Sto realizzando un programma per scaricare file di una qualunque estensione.
Ho 2 textbox, una dove immettere l'URL e l'altra dove immettere la directory di salvataggio e il nome del file.
Il problema dove sta? E' che quando faccio fare il download, si, viene compiuto alla grande ma il file viene salvato senza estensione... :nono:

Vi posto il codice:

Codice sorgente - presumibilmente C++

  1. private void SelezionaDirectoryDownload()
  2.         {
  3.             SaveFileDialog SalvaFile = new SaveFileDialog();
  4.             SalvaFile.Filter = "Tutti i tipi di file (*.*)|*.*";
  5.             if (SalvaFile.ShowDialog() == DialogResult.OK)
  6.             {
  7.                 SalvaFile.Dispose();
  8.                 TextBoxDirectory.Text = SalvaFile.FileName;
  9.             }
  10.         }



Codice sorgente - presumibilmente C++

  1. private void DownloadFile()
  2.         {
  3.             try
  4.             {
  5.                 WebClient Client = new WebClient();
  6.                 Uri URL = new Uri(TextBoxURL.Text);
  7.                 Client.DownloadFileAsync(URL, TextBoxDirectory.Text);    
  8.             }
  9.  
  10.             catch (Exception)
  11.             {
  12.                 MessageBox.Show("URL non valido o problema di connessione!", "Errore!", MessageBoxButtons.OK, MessageBoxIcon.Error);
  13.             }            
  14.         }


PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 15:01
Sabato, 11/07/2009
Innanzitutto perchè esegui il Dispose prima di utilizzare SaveFile? :D e comunque il Dispose puoi anche evitarlo, credo che venga effettuato automaticamente grazie al meccanismo di Garbage Collection! :)
Codice corretto:
Codice sorgente - presumibilmente C++

  1. private void SelezionaDirectoryDownload()
  2.         {
  3.             SaveFileDialog SalvaFile = new SaveFileDialog();
  4.             SalvaFile.Filter = "Tutti i tipi di file (*.*)|*.*";
  5.             if (SalvaFile.ShowDialog() == DialogResult.OK)
  6.                 TextBoxDirectory.Text = SalvaFile.FileName;
  7.         }


Il resto mi sembra corretto!

P.S. Forse non inserisce l'estensione perchè SaveFile non inserisce l'estensione in TextBoxDirectory :k:


Mountain's man said no!
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:06
Sabato, 11/07/2009
A parte il fatto che manca una { dopo l'if (condizione)... :hail:

Non so nemmeno io perchè ho messo il Dispose(). :-|
Infatti, il problema di fondo è quello ma come faccio a far salvare le ultime 4 lettere della textbox prima (link) come ad esempio .txt ?

Ultima modifica effettuata da il 11/07/2009 alle 21:16
PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 21:30
Sabato, 11/07/2009
Prima una precisazione :) non manca una parentesi graffa, devi sapere che se l'If (ma anche il For, il While, ecc...) è composto da una sola istruzione, si possono omettere le sue graffe :D
Dopodichè :rotfl: io ti consiglio di impostare la seconda parte così:
Codice sorgente - presumibilmente C++

  1. private void DownloadFile()
  2.         {
  3.             try
  4.             {
  5.                 WebClient Client = new WebClient();
  6.                 Uri URL = new Uri(TextBoxURL.Text);
  7.                 Client.DownloadFileAsync(URL, TextBoxDirectory.Text & TextBoxURL.Text.Substring(TextBoxURL.Text.LastIndexOf('.')););    
  8.             }
  9.  
  10.             catch (Exception)
  11.             {
  12.                 MessageBox.Show("URL non valido o problema di connessione!", "Errore!", MessageBoxButtons.OK, MessageBoxIcon.Error);
  13.             }            
  14.         }


Prova e fammi sapere perchè non l'ho provato :k:

Ultima modifica effettuata da riseofapocalypse il 11/07/2009 alle 21:34


Mountain's man said no!
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:38
Domenica, 12/07/2009
IO.Path.GetExtension("url/file") funziona anche con indirizzi url. Comunque non è male usare Dispose. Anzi, sarebbe bene avere cura di distruggere gli oggetti dopo l'uso, anche se la posizione di questo metodo nel primo esempio era sbagliata.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:57
Domenica, 12/07/2009
@ riseofapocalypse : Grazie per la dritta dell'if ma il tuo metodo dell'estensione era un pò "grezzo". :k:
@ Il Totem : Grazie, era proprio quello che cercavo. :k:

PM Quote