Как скачать файл CSV на сайте в ASP.NET - PullRequest
0 голосов
/ 21 января 2011

На своем веб-сайте я пытаюсь загрузить CSV, полученный от Yahoo. Содержит некоторые данные.

Я использую приведенный ниже код для загрузки CSV.

Проблема:

Я хочу загрузить и извлечь все данные из CSV Yahoo, но весь CSV не создается на моей стороне.

Только некоторая часть данных копируется. Таким образом, CSV загружается не со всеми своими данными.

Я пытался увеличить размер буфера, но это не помогло

Данные в CSV-файле Yahoo приведены на скриншоте ниже. Это данные, которые я хочу скачать

alt text

Данные, которые я получаю в созданном CSV, когда я загружаю тот же CSV Yahoo, как показано ниже.

alt text

Код, который я использую для загрузки CSV из Yahoo

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://download.finance.yahoo.com/d/quotes.csv?s=^DJI+^N225+^GSPC+^GDAXI+^FCHI+^HSI+^IXIC+^FTSE&f=l1d14n");
        HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
        Stream str = ws.GetResponseStream();
        inBuf = new Byte[10000000];
        int bytesToRead = Convert.ToInt32(inBuf.ToString().Length);

        int bytesRead=0;
        while(bytesToRead>0)
        {
            int n = str.Read(inBuf,bytesRead,bytesToRead);
            if(n==0)
            {
                break;
            }
            bytesRead += n;
            bytesToRead -= n;
        }
        FileStream fstr = new FileStream("C:\\VSS Working Folder\\20th Jan 11 NewHive\\NewHive\\CSV\\new.csv", FileMode.OpenOrCreate, FileAccess.Write);
        fstr.Write(inBuf,0,bytesRead);
        str.Close();
        fstr.Close();
        return "CSV Downloaded Successfully!";

Что может быть не так?

1 Ответ

1 голос
/ 21 января 2011

inBuf.ToString() дает вам «System.Byte []», а длина этой строки равна 13. Таким образом, вы сохраняете только 13 символов, которые дадут вам только 10274.52,"1/2 из загруженного файла.

Вы можете получить длину, используя inBuf.Length.Обратите внимание, что Length возвращает int, поэтому вам не нужно приводить к int.

...