Oppure

Loading
11/07/09 12:28
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:

private void SelezionaDirectoryDownload()
        {
            SaveFileDialog SalvaFile = new SaveFileDialog();
            SalvaFile.Filter = "Tutti i tipi di file (*.*)|*.*";
            if (SalvaFile.ShowDialog() == DialogResult.OK)
            {
                SalvaFile.Dispose();
                TextBoxDirectory.Text = SalvaFile.FileName;
            }
        }


  private void DownloadFile()
        {
            try
            {
                WebClient Client = new WebClient();
                Uri URL = new Uri(TextBoxURL.Text);
                Client.DownloadFileAsync(URL, TextBoxDirectory.Text);     
            }

            catch (Exception)
            {
                MessageBox.Show("URL non valido o problema di connessione!", "Errore!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }             
        }
11/07/09 13:01
riseofapocalypse
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:
private void SelezionaDirectoryDownload()
        {
            SaveFileDialog SalvaFile = new SaveFileDialog();
            SalvaFile.Filter = "Tutti i tipi di file (*.*)|*.*";
            if (SalvaFile.ShowDialog() == DialogResult.OK)
                TextBoxDirectory.Text = SalvaFile.FileName;
        }

Il resto mi sembra corretto!

P.S. Forse non inserisce l'estensione perchè SaveFile non inserisce l'estensione in TextBoxDirectory :k:
aaa
11/07/09 19:06
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 11/07/09 19:16
11/07/09 19:30
riseofapocalypse
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ì:
private void DownloadFile()
        {
            try
            {
                WebClient Client = new WebClient();
                Uri URL = new Uri(TextBoxURL.Text);
                Client.DownloadFileAsync(URL, TextBoxDirectory.Text & TextBoxURL.Text.Substring(TextBoxURL.Text.LastIndexOf('.')););    
            }

            catch (Exception)
            {
                MessageBox.Show("URL non valido o problema di connessione!", "Errore!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }            
        }

Prova e fammi sapere perchè non l'ho provato :k:
Ultima modifica effettuata da riseofapocalypse 11/07/09 19:34
aaa
12/07/09 12:38
Il Totem
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.
aaa
12/07/09 18:57
@ 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: