Question

Je suis confus avec le bloc de code ci-dessous car il télécharge le contenu de la page Web plutôt que le fichier lui-même. Je crée un fichier factice contenant quelques textes, puis je le télécharge, mais lorsque je l'ouvre, je ne vois aucun texte écrit, mais il comporte d'étranges balises de langue 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;
        }
    }
Était-ce utile?

La solution

Je suppose que myURL se termine par " / " et pas " .csv " Ai-je raison? Pensez-vous que myURL + CSVFile contiendra le chemin complet du fichier? Ça ne va pas. ( Voir doc ) L'URL doit être le chemin d'accès au fichier. lui-même. Vous êtes autorisé à avoir quelque chose comme ça:

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

Si je ne suis pas sur la bonne voie, veuillez indiquer le contenu de l'URL et les noms de certaines des premières balises figurant dans le fichier téléchargé.

Autres conseils

Le site nécessite-t-il un identifiant et vous redirige-t-il vraiment?

J'en ai déjà eu un qui m'obligeait à simuler mes mouvements de navigation (et à stocker des cookies, etc.) avant de pouvoir télécharger le fichier dont j'avais besoin.

Désolé, qu'est-ce que & la page Web " signifie dans & "le contenu de la page Web &"; Il n'y a qu'une seule URL impliquée ici, myURL. MyURL pointe-t-il directement sur le fichier CSV? Si tel est le cas, à quoi ressemble le contenu que vous recevez?

Aussi:

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

... est embarrassant. S'il vous plaît écrivez:

downloadOk = File.Exists(CSVfile);

Le résultat est identique, en 1 ligne au lieu de 4.

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

C'est encore pire. La seule ligne:

return downloadOk;

... fait exactement la même chose dans 1 ligne de code au lieu de 7.

De plus, les deux lignes de votre bloc d'exceptions ...

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

... ne faites absolument rien. downloadOk sera toujours faux dans votre bloc d'exception et la variable locale & "err &"; n'est jamais utilisé avant qu'il ne soit hors de portée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top