سؤال

وأنا مرتبك مع كتلة التعليمات البرمجية أدناه للماذا بتحميل محتويات صفحة الويب بدلا من الملف نفسه. I إنشاء ملف وهمية مع بعض النصوص في ذلك، ثم أنا تحميل البرنامج، ولكن عندما أقوم بفتح ملف التحميل، وأنا لا أرى أي نص كتبته ولكن لديها علامات لغة الويب غريبة.

    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 وما تناقلته بعض والأولى عدة علامات هي في الملف الذي تم تنزيله.

نصائح أخرى

هل يحتاج الموقع لتسجيل الدخول وإعادة توجيه انها حقا لك؟

ولقد كان واحد قبل أن يطلب مني تزوير حركات التصفح بلدي (وتخزين ملفات تعريف الارتباط وكذا) قبل أن تسمح لي لتحميل ملف احتاجه.

عذرا، ما يفعل "صفحة ويب" يعني في "محتويات صفحة الويب". هناك 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 يكون دائما كاذبة في كتلة استثناء الخاص بك، والمتغير المحلي "يخطئ" وتستخدم أبدا قبل أن يخرج من النطاق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top