Plupload


Um problema frequentemente encontrado no desenvolvimento web é criar um sistema de upload. Quando há necessidade de enviar uma grande quantidade de arquivos – uma galeria de fotos, por exemplo – ou quando é preciso enviar arquivos grandes – o que seria mais interessante com uma barra de progresso, as limitadas opções da tag <input type=”file” /> não são suficientes para suprir nossas necessidades. Neste post vou mostrar um plugin jQuery chamado Plupload. Como ele é possivel fazer upload usando praticamente todos os recurso que o navegador do cliente oferece.

Opções

Plupload fornece as seguintes possibilidades de upload:

Flash

Este navegador não pussui Adobe Flash instalado.

Gears

Este navegador não possui o Google Gears instalado.

Silverlight

Esse navegador não possui o plugin Microsoft Silverlight instalado.

BrowserPlus

Esse navegador não possui o plugin Yahoo BrowserPlus instalado.

HTML 5

Esse navegador não suporta upload nativo. Tente com Firefox 3 ou Safari 4.

HTML 4

Seu navegador não suporta um formulário simples de upload. Você está usando Lynx?

Código fonte

<!-- Carrega o CSS e o jQuery -->
<style type="text/css">@import url(css/plupload.queue.css);</style>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>

<!-- Scripts de terceiros, necessário para o Google Gears e o BrowserPlus -->
<script type="text/javascript" src="js/gears_init.js"></script>
<script type="text/javascript" src="http://bp.yahooapis.com/2.4.21/browserplus-min.js"></script>

<!-- Plupload e jQuery Queue Widget -->
<script type="text/javascript" src="js/plupload.full.min.js"></script>
<script type="text/javascript" src="js/jquery.plupload.queue.min.js"></script>

<script type="text/javascript">

    $(function() {
        // Flash
        $("#flash_uploader").pluploadQueue({
            // Configurações Gerais
            runtimes : 'flash',
            url : 'upload.php',
            max_file_size : '10mb',
            chunk_size : '1mb',
            unique_names : true,
            multipart:true,

            // Redimensiona as imagens do lado do cliente, quando possível
            resize : {width : 320, height : 240, quality : 90},

            // Especifica os tipos de arquivos válidos
            filters : [
                {title : "Imagess", extensions : "jpg,gif,png"},
                {title : "Arquivos Zip", extensions : "zip"}
            ],

            // Confiruação do Flash
            flash_swf_url : 'js/plupload.flash.swf'
        });

        // Gears
        $("#gears_uploader").pluploadQueue({
            // Configurações Gerais
            runtimes : 'gears',
            url : 'upload.php',
            max_file_size : '10mb',
            chunk_size : '1mb',
            unique_names : true,
            multipart:true,

            // Redimensiona as imagens do lado do cliente, quando possível
            resize : {width : 320, height : 240, quality : 90},

            // Especifica os tipos de arquivos válidos
            filters : [
                {title : "Imagess", extensions : "jpg,gif,png"},
                {title : "Arquivos Zip", extensions : "zip"}
            ]
        });

        // Silverlight
        $("#silverlight_uploader").pluploadQueue({
            // Configurações Gerais
            runtimes : 'silverlight',
            url : 'upload.php',
            max_file_size : '10mb',
            chunk_size : '1mb',
            unique_names : true,
            multipart:true,

            // Redimensiona as imagens do lado do cliente, quando possível
            resize : {width : 320, height : 240, quality : 90},

            // Especifica os tipos de arquivos válidos
            filters : [
                {title : "Imagess", extensions : "jpg,gif,png"},
                {title : "Arquivos Zip", extensions : "zip"}
            ],

            // Configuração do Silverlight
            silverlight_xap_url : 'js/plupload.silverlight.xap'
        });

        // BrowserPlus
        $("#browserplus_uploader").pluploadQueue({
            // Configurações Gerais
            runtimes : 'browserplus',
            url : 'upload.php',
            max_file_size : '10mb',
            chunk_size : '1mb',
            unique_names : true,
            multipart:true,
            dragdrop : false,

            // Redimensiona as imagens do lado do cliente, quando possível
            resize : {width : 320, height : 240, quality : 90},

            // Especifica os tipos de arquivos válidos
            filters : [
                {title : "Imagess", extensions : "jpg,gif,png"},
                {title : "Arquivos Zip", extensions : "zip"}
            ]
        });

        // HTML5
        $("#html5_uploader").pluploadQueue({
            // Configurações Gerais
            runtimes : 'html5',
            url : 'upload.php',
            max_file_size : '10mb',
            chunk_size : '1mb',
            unique_names : true,
            multipart:true,

            // Redimensiona as imagens do lado do cliente, quando possível
            resize : {width : 320, height : 240, quality : 90},

            // Especifica os tipos de arquivos válidos
            filters : [
                {title : "Imagess", extensions : "jpg,gif,png"},
                {title : "Arquivos Zip", extensions : "zip"}
            ]
        });

        // HTML4
        $("#html4_uploader").pluploadQueue({
            // Configurações Gerais
            runtimes : 'html4',
            url : 'upload.php'
        });
    });
</script>

...

<h3>Flash</h3>
<div id="flash_uploader">Este navegador não pussui Adobe Flash instalado.</div>

<h3>Gears</h3>
<div id="gears_uploader">Este navegador não possui o Google Gears instalado.</div>

<h3>Silverlight</h3>
<div id="silverlight_uploader">Esse navegador não possui o plugin Microsoft Silverlight instalado.</div>

<h3>BrowserPlus</h3>
<div id="browserplus_uploader">Esse navegador não possui o plugin Yahoo BrowserPlus instalado.</div>

<h3>HTML 5</h3>
<div id="html5_uploader">Esse navegador não suporta upload nativo. Tente com Firefox 3 ou Safari 4.</div>

<h3>HTML 4</h3>
<div id="html4_uploader">Seu navegador não suporta um formulário simples de upload. Você está usando Lynx?</div>

Qual escolher?

Agora você pergunta:

  • Qual é a melhor opção?
  • Como saber qual opções estão disponíveis no navegador de cada cliente?

Simples! Use essa opção:

Tudo em um

Seu navegador não suporta Flash, Silverlight, Gears, BrowserPlus, HTML5 ou HTML4.

<script type="text/javascript">

    $(function() {
        $("#uploader").pluploadQueue({
            // Configurações Gerais
            runtimes : 'html5,gears,flash,silverlight,browserplus,html4',
            url : 'upload.php',
            max_file_size : '10mb',
            chunk_size : '1mb',
            unique_names : true,
            multipart:true,

            // Redimensiona as imagens do lado do cliente, quando possível
            resize : {width : 320, height : 240, quality : 90},

            // Especifica os tipos de arquivos válidos
            filters : [
                {title : "Imagens", extensions : "jpg,gif,png"},
                {title : "Arquivos Zip", extensions : "zip"}
            ],

            // Flash
            flash_swf_url : 'js/plupload.flash.swf',

            // Silverlight
            silverlight_xap_url : 'js/plupload.silverlight.xap'
        });
    });
</script>

...

<div id="uploader">
    <p>Seu navegador não suporta Flash, Silverlight, Gears, BrowserPlus ou HTML5.</p>
</div>

Ou seja, você determina uma lista de opções, a primeira disponível será utilizada.

Links

Num post futuro vou falar sobre a tradução do plugin.
Aqui está a tradução: Plupload – Traduzir para Portguês

Espero que vocês tenham gostado! Até a próxima.

Você pode seguir qualquer resposta a este post no feed RSS 2.0. Você pode escrever uma resposta, ou fazer um trackback em seu próprio site.

  • http://blog.falci.me/javascript/jquery/plupload-traduzir-para-portugues/ Plupload – Traduzir para Português | blog.falci.me

    [...] algum tempo postei sobre o Plupload, um plugin jQuery para upload de [...]