|
Algumas vezes temos um Stream que contém dados para imprimirmos na tela para o usuário. Um cenário muito usado é quando por exemplo precisamos exibir ao usuário um avatar, ou mesmo uma imagem que está armazenada em uma DB qualquer e para não interferir o processamento da página corrente, criamos uma segunda página, esta responsável por recuperar o arquivo e carregar em um objeto do tipo FileStream, e assim, percorrer este objeto e imprimi-lo no browser.
A classe FileStream está contida dentro do Namespace System.IO, qual temos que importá-lo para a utilização desta classe sem a necessidade de digitarmos o “path” completo da mesma. Apenas como exemplo, utilizaremos um arquivo que está no disco para exibição.
|

|
Em primeiro lugar, importamos o Namespace System.IO:
Abaixo o código no evento Page_Load do WebForm, que carrega a imagem para o Stream e en seguida, exibimos a imagem no browser:
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
|
|
| Private Sub Page_Load(ByVal sender As Object, ByVal e As _ |
| System.EventArgs) Handles MyBase.Load |
| |
| Response.Clear() |
| Dim fs As FileStream |
| Dim b(1024) As Byte |
| Try |
| fs = File.Open(Server.MapPath(“Images/Win2003.jpg”), _ |
| FileMode.Open, FileShare.Read, FileShare.None) |
| |
| While (fs.Read(b, 0, b.Length) > 0) |
| Response.BinaryWrite(b) |
| End While |
| Finally |
| If Not (fs Is Nothing) Then |
| fs.Close() |
| End If |
| End Try |
| Response.End() |
| End Sub |
|
|
Analisando o código acima, através do método Open da Classe File (que também está contida no Namespace System.IO), que nos retorna um objeto do tipo FileStream, atribuímos o seu retorno à um objeto FileStream. Depois disso, percorremos o nosso Stream enquanto o seu conteúdo seja maior que 0, pois através do método Read lemos um bloco de bytes do Stream e escrevemos esses dados em um determinado buffer. E por fim, chamamos o método Response.End() para encerrar a execução, já que a página foi criada apenas para esta finalidade.