Escrevendo em arquivo Texto com Silverlight

Introdução


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.

Generic Handler

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 ?


blog comments powered by Disqus

NewsLetter

Por favor preencher os campos.
Quer receber artigos?


Receber em HTML?