System.Web.HttpPostedFile i odczytanie treści pliku

System.Web.HttpPostedFile i odczytanie treści pliku
GR
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 12 lat
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:

Kopiuj
                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

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

Użyj:

Kopiuj
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:

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.