Olá pessoal sejam bem vindos a mais um artigo sobre Ajax, pretendo mostrar nesse artigo como fazer upload de arquivos com Ajax para auxiliar nesse exemplo vou usar duas bibliotecas jQuery e Ajaxupload.

As vantagens de fazer upload de arquivos com Ajax seria da sua implementação e possível utilização de qualquer recurso de Ajax do ASP.NET que não vai interferir no upload.

Para começar o desenvolvimento do nosso exemplo crie um projeto do tipo Web e adicione a biblioteca jQuery e Ajaxupload segue abaixo os links para download.

Depois que fazer o download inclua as duas bibliotecas no projeto e crie agora um WebService do tipo Handler.ashx com nome de upload.

Esse handler será responsável por recuperar do HttpContext nossa requisição e salvar arquivo no diretório desejado como mostra abaixo.

public void ProcessRequest(HttpContext context)
        {
            if (context.Request.Files.Count > 0)
            {
                string path = context.Server.MapPath("~/upload/");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
               
                HttpPostedFile postFile = context.Request.Files[0];
                postFile.SaveAs(path + postFile.FileName);
                context.Response.ContentType = "text/plain";
                context.Response.Write("Sucesso");
            }
 
        }

A função do nosso handler é bem simples recuperar do Context o arquivo verificar se existe o diretório e salvar o arquivo.

O segundo passo agora e acrescentar a chamada do ajaxupload e colocar na nossa página input do tipo file.

<script type="text/javascript">
        $(document).ready(function () {
           var interval = 0;
            var options = {
                action: 'upload.ashx',
                autoSubmit: true,
                onSubmit: function (file, ext) {
                    {
                        var button = $('#msg')
                        button.text('Uploading');
                        this.disable();
                        interval = window.setInterval(function () {
                            {
                                var text = button.text();
                                if (button.text().length < 13) {
 
                                    {
                                        button.text(button.text() + '.');
                                    }
                                } else {
 
                                    {
                                        button.text('Uploading');
                                    }
                                }
                            }
                        }, 200);
                    }
                },
                onComplete: function (file, response) {
                    var button = $('#msg')
                    button.text(response.toString());
                    button.removeClass('hover');
                    window.clearInterval(interval);
                    this.enable();
                }
            };
            new AjaxUpload('#myFileUpload', options);
        });
    </script>

E acrescente o HTML abaixo e execute a aplicação.

<input id="myFileUpload" type="file" />
<p id="msg"></p>

De forma simples criamos um sistema de upload de arquivos com Ajax espero que tenham gostado até a próxima.