Domanda

Sono confuso con il blocco di codice qui sotto perché perché scarica il contenuto della pagina web piuttosto che il file stesso. Creo un file fittizio con alcuni testi in esso quindi lo scarico, ma quando apro il file di download, non vedo alcun testo che ho scritto ma ha strani tag di lingua web.

    private bool DownloadCSVfile()
    {
        bool downloadOk = false;
        WebClient client = null;

        try
        {
            client = new WebClient();
            client.Credentials = CredentialCache.DefaultCredentials;
            client.DownloadFile(myURL, CSVfile);

            if (File.Exists(CSVfile))
                downloadOk = true;
            else
                downloadOk = false;
        }
        catch (Exception error)
        {
            downloadOk = false;
            string err = error.Message;
        }

        //release resource
        if (client != null)
        {
            client.Dispose();
            client = null;
        }

        //
        if (downloadOk == true)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
È stato utile?

Soluzione

Suppongo che myURL termina con " / " e non " .csv " Ho ragione? Stai pensando che myURL + CSVFile conterrà il percorso completo del file? Non lo farà. ( Vedi doc ) L'URL deve essere il percorso del file si. Puoi avere qualcosa del genere:

client.DownloadFile(@"./file.csv", "filename.txt");

Se non sono sulla buona strada, ti preghiamo di dire cosa c'è nell'URL e quali sono alcuni dei primi numerosi tag nel file scaricato.

Altri suggerimenti

Il sito richiede un login e ti sta davvero reindirizzando?

Ne ho avuto uno prima che mi richiedeva di simulare i miei movimenti di navigazione (e di memorizzare cookie e simili) prima che mi permettesse di scaricare un file di cui avevo bisogno.

Siamo spiacenti, cosa significa " la pagina web " significa in " il contenuto della pagina web " ;. C'è solo un URL coinvolto qui, che è myURL. MyURL punta direttamente al file CSV? In tal caso, come sono effettivamente i contenuti che stai ricevendo?

Inoltre:

if (File.Exists(CSVfile))
    downloadOk = true;
else
    downloadOk = false;

... è imbarazzante. Si prega di scrivere:

downloadOk = File.Exists(CSVfile);

Che ha risultati identici, in 1 riga invece di 4.

//
if (downloadOk == true)
{
    return true;
}
else
{
    return false;
}

Questo è anche peggio. La linea singola:

return downloadOk;

... fa esattamente la stessa cosa in 1 riga di codice anziché in 7.

Inoltre, entrambe le righe nel blocco delle eccezioni ...

catch (Exception error)
{
    downloadOk = false;
    string err = error.Message;
}

... non fare assolutamente nulla. downloadOk sarà sempre falso nel blocco delle eccezioni e la variabile locale " err " non viene mai utilizzato prima che esca dal campo di applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top