Вопрос

Меня смущает приведенный ниже блок кода, потому что он загружает содержимое веб-страницы, а не сам файл.Я создаю фиктивный файл с некоторыми текстами в нем, затем загружаю его, но когда я открываю загружаемый файл, я не вижу никакого текста, который я написал, но у него есть странные теги веб-языка.

    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;
        }
    }
Это было полезно?

Решение

Я предполагаю myURL заканчивается на "/", а не на ".csv", я прав?Ты думаешь, что myURL + CSVFile будет содержать полный путь к файлу?Этого не произойдет.(Смотрите документ) URL-адрес должен быть путем к самому файлу.Вам разрешено иметь что-то подобное:

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

Если я не на правильном пути, пожалуйста, сообщите, что содержится в URL-адресе и какие из первых нескольких тегов есть в загруженном файле.

Другие советы

Требуется ли сайту войти в систему, и он действительно перенаправляет вас?

У меня уже был такой, который требовал, чтобы я подделывал свои перемещения в интернете (и сохранял файлы cookie и тому подобное), прежде чем это позволило бы мне загрузить нужный мне файл.

Извините, что означает "веб-страница" в разделе "содержимое веб-страницы".Здесь задействован только один URL-адрес - myURL.Указывает ли myURL непосредственно на CSV-файл?Если да, то как на самом деле выглядит содержимое, которое вы получаете?

Также:

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

... это смущает.Пожалуйста, напишите:

downloadOk = File.Exists(CSVfile);

Это дает идентичные результаты, в 1 строке вместо 4.

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

Это еще хуже.Единственная строка:

return downloadOk;

...делает точно то же самое в 1 строке кода вместо 7.

Кроме того, обе строки в вашем блоке исключений...

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

...абсолютно ничего не делайте.downloadOk всегда будет иметь значение false в вашем блоке исключений, а локальная переменная "err" никогда не используется до того, как она выйдет за пределы области видимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top