0

以下のコードブロックは、ファイル自体ではなくWebページのコンテンツをダウンロードする理由で混乱しています。いくつかのテキストを含むダミーファイルを作成してからダウンロードしますが、ダウンロードファイルを開くと、書いたテキストが表示されませんが、奇妙な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;
        }
    }
4

3 に答える 3

1

myURL「.csv」ではなく「/」で終わると思いますよね?myURL + CSVFileファイルへのフルパスが含まれると思いますか?そうではありません。(ドキュメントを参照)URLはファイル自体へのパスである必要があります。あなたはこのようなものを持つことができます:

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

私が正しい方向に進んでいない場合は、URLの内容と、ダウンロードしたファイルの最初のいくつかのタグの一部を教えてください。

于 2009-06-29T02:50:29.493 に答える
0

サイトはログインを必要とし、それは本当にあなたをリダイレクトしていますか?

以前は、必要なファイルをダウンロードできるようになる前に、ブラウジングの動きを偽造する(そしてCookieなどを保存する)必要がありました。

于 2009-06-29T02:51:17.557 に答える
-1

申し訳ありませんが、「ウェブページの内容」の「ウェブページ」とはどういう意味ですか。ここに関係するURLはmyURLだけです。myURLはCSVファイルを直接指しますか?もしそうなら、あなたが受け取っているコンテンツは実際にはどのように見えますか?

また:

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

...恥ずかしいです。書いてください:

downloadOk = File.Exists(CSVfile);

これは、4行ではなく1行で同じ結果になります。

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

それはさらに悪いことです。単一行:

return downloadOk;

...7行ではなく1行のコードでまったく同じことを行います。

また、例外ブロックの両方の行...

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

...絶対に何もしません。downloadOkは例外ブロックでは常にfalseになり、ローカル変数「err」はスコープ外になる前に使用されることはありません。

于 2009-06-29T02:57:05.330 に答える