Escrevendo em arquivo Texto com Silverlight
Neste tutorial será mostrado como gravar um arquivo com extensão em *.txt dentro do servidor usando o Silverlight usando a linguagem C# e o Visual Studio 2010. Como ponto de partida, é necessário conhecer as classes WebClient e StreamWriter, e o template Generic Handler.
A classe WebClient fornece métodos comuns para enviar dados ou receber dados a partir de qualquer local, intranet ou Internet recurso identificado por um URI. Nesta explicação será utilizado o método OpenWriteAsync.
| Nota: Por padrão, o. NET Framework suporta Uris que começam com http:, https:, ftp:, e file: identificadores de sistema. |
A classe StreamWriter está presente no namespace System.IO o qual fornece diversas classes para trabalhar com arquivos textos , arquivos binários e streams de bytes. As classes contém diversos métodos para as operações mais comuns com arquivos : copiar , excluir, manipular os atributos , entre outras.
O template Generic handler são “manipuladores genéricos” e tem uma extensão em ashx, eles são equivalentes aos manipuladores personalizados escritos em C Sharp ou VB. Sendo convenientes da mesma forma que um arquivo em aspx e são compilados automaticamente.
Projeto
Inicie um projeto em Silverlight usando o visual Studio 2010 ou 2008. E dentro do projeto Web adicione um Generic Handler com o nome de upload.ashx, como mostra a Figura 1.0.
Figura 1.0 – Adicionando Generic Handler
Dentro do arquivo Upload.ashx.cs, adicione o código como mostrado na Tabela 1.0. Este código irá criar o diretório File e o arquivo que será recebido na string filename. Verificando se a string filename não é vazia, bem como se existe o diretório File. Caso o diretório não exista, é usado o método CreateDirectory.
|
public void ProcessRequest(HttpContext context) { HttpRequest request = context.Request; HttpResponse response = context.Response; HttpServerUtility server = context.Server; string fileName = context.Request.Params["filename"]; if (!string.IsNullOrEmpty(fileName)) { using (Stream inputStream = request.InputStream) { string folder = server.MapPath("~") + "\\File";
if (!System.IO.Directory.Exists(folder)) System.IO.Directory.CreateDirectory(folder);
using (FileStream fileStream = new FileStream(folder + "\\" + fileName, FileMode.Create)) { byte[] fileContent = new byte[inputStream.Length]; inputStream.Read(fileContent, 0, fileContent.Length); fileStream.Write(fileContent, 0, fileContent.Length); fileStream.Flush(); } } response.Clear(); response.End(); } } |
Tabela 1.0 – Criando diretório e arquivo para escrita
Adicione no código MainPage.xaml dois objetos, um do tipo Button eum Textbox. Forneça o nome como clique e textBox1 respectivamente.
No arquivo MainPage.xaml.cs adicione o código conforme mostra a Tabela 2.0.
|
void clique_Click(object sender, RoutedEventArgs e) { WebClient wc = new WebClient(); wc.OpenWriteCompleted += new OpenWriteCompletedEventHandler(wc_OpenWriteCompleted); Uri _uri= new Uri(Application.Current.Host.Source, "../Upload.ashx/?filename=" + "arquivo.txt"); wc.OpenWriteAsync(uri,null,"arquivo.txt"); } void wc_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e) { if (e.Error == null) { StreamWriter outputStream = new StreamWriter(e.Result); outputStream.Write(textBox1.Text); outputStream.Close(); } } |
Tabela 2.0 – Usando as classes WebClient e StreamWriter
Este tutorial demonstrou como criar e escrever dentro de um arquivo txt no servidor em Silverlight.
Dúvidas ou sugestões ?
