MC, 00:42 wtorek, 24.07.2012 r.
Ilustracja do artykułu: ASP.NET - Streamowanie (pobieranie) pliku przechowywanego w tablicy bajtów (byte[])

ASP.NET - Streamowanie (pobieranie) pliku przechowywanego w tablicy bajtów (byte[])

Wpis ten poświęcam na utrwalenie sposobu na przekierowanie nagłówka strony w technologii ASP.NET, tak by streamować tablicę bajtów jako plik.

O co chodzi?

Wyobraźmy sobie, że mamy tablicę bajtów (byte[]), której zawartość odpowiada pewnemu plikowi, a naszym zadaniem jest umożliwić użytkownikowi strony, pobranie tego pliku. Całość powinna wyglądać zupełnie standardowo, czyli kliknięcie w link/przycisk i propozycja ze strony przeglądarki internetowej, dotycząca operacji na pliku gotowym do pobrania (zapis/otwarcie).

Jak tego dokonać?

Najprostszym rozwiązaniem jest zmiana nagłówka strony przy PostBack-u, tak by dać przeglądarce do zrozumienia, że będziemy streamować plik w postaci tablicy bajtów. Do tego celu będziemy modyfikować obiekt Response. Poniższy przykład powinien rozwiać wątpliwości co do tego, jak to powinno wyglądać:
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", filename)); // filename - nazwa pliku (zmienna typu string)
Response.AddHeader("Content-Length", file.Count().ToString()); // file - plik (tablica byte[]); tutaj rozmiar pliku
Response.BinaryWrite(file); // plik
Response.End();

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: