System.Web.HttpPostedFile i odczytanie treści pliku

0

Cześć,

Mam problem z odczytaniem treści pliku, który wysyłam przez formularz HTML do strony ASP.NET. Zgodnie z tym co znalazłem w sieci napisałem coś takiego:

                string rooms = string.Empty;


                int length = this.Rooms.ContentLength;


                byte[] input = new byte[length];


                stream.Read(input, 0, length);


                for (int i = 0; i < length; i++)
                {
                    rooms += input[i].ToString();
                }

Gdzie oczywiście treść chciałbym zapisać do zmiennej rooms, a właściwość this.Rooms jest instancją klasy System.Web.HttpPostedFile.

Problem w tym, że zamiast treści pliku otrzymuję ciąg cyfr. Poproszę Was o pomoc.

Pozdrawiam,
Grzegorz

0

Zamiast

for (int i = 0; i < length; i++)
{
    rooms += input[i].ToString();
}

Użyj:

rooms = Encoding.ASCII.GetString(input);

Klasa Encoding zawiera również podobne metody dla znaków zapisanych w różnych formatach unicode.

Trzeba pamiętać, że byte.ToString() zwraca to samo co int.ToString(), czyli liczbę w formie stringa, a nie znak o danym kodzie ASCII.

W C# typy byte czy ushort nie są wcale tym samym typem co char. char jest 16-bitowym typem tak jak short czy ushort, lecz jest on bezpośrednio przeznaczony do przechowywania znaków (unicode), kiedy inne przytoczone typy przeznaczone są do przechowywania liczb. W związku z tym char.ToString() zwróci znak, zaś ushort.ToString() zwróci liczbę. A więc możesz również użyć rzutowania do char-a w swoim kodzie i wywołać metodę ToString() na typie char:

for (int i = 0; i < length; i++)
{
    rooms += ((char)input[i]).ToString();
}

Jednak pierwsza metoda jest bardziej przejrzysta i możliwe, że nieco wydajniejsza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1