Frage

Ich bin verwirrt mit dem Codeblock unten, weil, warum es herunterlädt, den Inhalt der Webseite und nicht die Datei selbst. Ich schaffe Dummy-Datei mit einigen Texten in es ich es dann herunterladen, aber wenn ich die Download-Datei zu öffnen, ich sehe keinen Text, den ich schrieb, aber es hat seltsame Web-Sprache-Tags.

    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;
        }
    }
War es hilfreich?

Lösung

Ich vermute, myURL in „/“ endet und nicht „.csv“ Habe ich recht? Denken Sie, dass myURL + CSVFile den vollständigen Pfad zur Datei enthalten? Es wird nicht. ( Siehe doc ) Die URL muss der Pfad zur Datei sein selbst. Sie dürfen so etwas haben:

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

Wenn ich nicht auf dem richtigen Weg bin, bitte sagen Sie, was in der URL und, was einige der ersten paar Tags sind in der heruntergeladenen Datei.

Andere Tipps

Verlangt die Website ein Login und es Umleiten Sie wirklich?

Ich hatte eine vorher musste ich meine Browser-Bewegungen fälschen (und Cookies und solche Speicherung), bevor es mir erlauben würde, eine Datei herunterzuladen, die ich brauchte.

Es tut uns Leid, was bedeutet „die Webseite“ bedeutet in „die Inhalte der Webseite“. Es gibt nur eine URL hier beteiligt, die myURL ist. Hat myURL Punkt in der CSV-Datei direkt? Wenn ja, was bedeutet dann die Inhalte, die Sie empfangen tatsächlich aussehen?

Auch:

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

... ist peinlich. Bitte schreiben Sie:

downloadOk = File.Exists(CSVfile);

Das hat identische Ergebnisse, in 1 Zeile statt 4.

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

Das ist noch schlimmer. Die einzige Zeile:

return downloadOk;

... tut genau das Gleiche in 1 Zeile Code statt 7.

Auch die beiden Zeilen in Ausnahmeblock ...

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

... absolut nichts tun. downloadOk wird in Ihrem Ausnahmeblock immer falsch sein, und die lokale Variable „err“ wird nie verwendet, bevor es aus dem Geltungsbereich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top