Categorias

Arquivos

jqswfupload 1.1

Postado em Janeiro 21st, 2010 por Alexandre Magno

jQuery UI, projetos jQuery, SWFUpload e Jquery, Jquery, Javascript

 Logo do jqswfupload
Depois de fazer um esforço para mudar a estrutura do plugin em como é chamado e não mais depender dos parâmetros do swfupload, refiz toda a lógica de opções do plugin e abstrair todas as opções do upload.

Sendo assim, o plugin agora só tem um parâmetro que são as opções do plugin. Antes passando as opções do swfupload o desenvolvedor poderia quebrar o funcionamento atual sobrescrevendo eventos. Nesta versão o plugin possui todas as configurações e assim pode extender e customizar sem afetar as atuais funcionalidades.

Ver exemplo do jqswfuploadMake the download of the jqswfupload

Documentação

Os requisitos para o funcionamento do plugin estão listado abaixo:

  • jQuery v1.3.2
  • SWFUpload v2.1
  • jQuery UI 1.7 (usando somente o efeito de highlight)

Suporte:

  • IE 7+
  • Chrome 1+
  • Firefox 3+
  • Safari 3+

* Não houve teste no IE6

Utilização

Primeiro, você deve incluir o plugin e suas dependências:

 <link type="text/css" href="jquery.jqswfupload.css" rel="stylesheet" />

<script language="JavaScript" type="text/javascript" src="libs/jquery-1.3.2.min.js"></script>

<script language="JavaScript" type="text/javascript" src="libs/jquery-ui-1.7.1.custom.min.js"></script>

<script language="JavaScript" type="text/javascript" src="libs/swfupload.js"></script>

<script language="JavaScript" type="text/javascript" src="libs/jquery.jqswfupload.js"></script>

Esta ordem é importante para que o plugin possa funcionar corretamente.

jqswfupload usa a biblioteca swfupload em conjunto com o jQuery. Então ele sobrescreve um simples input de arquivo com um sistema de upload múltiplos baseado em flash que possui todo o controle de progresso e tamanho do arquivo.

A marcação mínima para que o plugin possa funcionar está listada abaixo:

 <div id="upload-container">

<form action="upload.php" method="post" enctype="multipart/form-data">

<div id="upload-placeholder">

<input type="file" name="Filedata" />

<input type="submit" value="upload" />

</div>

</form>

</div>

Com esta marcação você pode invocar o plugin com as seguintes opções:


<pre>/*
* jQuery upload - main file
*/
$(document).ready(function(){
$("#upload-container").jqswfupload({
onUploadStart: function(file) {
$('#debug-bar').append('Upload Started: '+file.name);
},
onFileSuccess: function(file,data,response) {
$('#debug-bar').append('File success: '+ file.name + data);
},
onFileError: function(file,code,message){
$('#debug-bar').append('File Error: '+ file.name + message);
},
totalSize: '100 kb',
uploadUrl: upload_uri + 'upload.php',
// The post sent to server in the same request as the file object
post_params : {
'type' : 'swfupload',
'test' : 'val'
}
});
});</pre>

O plugin usa um parâmetro, um objeto literal de opções

 $('container').jqswfupload(options);

Opções do Plugin

  • uploadUrl
    a url que ira receber a lógica do upload
    tipo: string
    padrão: '../upload.php'
  • flashUrl
    o caminho do arquivo swf da biblioteca swfupload

    tipo: string
    padrão:
    "libs/swfupload.swf"
  • buttomPlaceholderId
    O id do elemento usado para identificar o container e onde tem inserido o upload do tipo file
    tipo: string
    padrão: 'upload-placeholder'
  • buttomImageUrl
    A url da imagem para adicionar o arquivo
    tipo: string
    padrão: 'images/icon-add.gif'
  • buttomText
    O texto do botão. ex.: "adicionar arquivos"

    tipo: string
    padrão:vazio
  • buttomWidth
    A largura em pixels do botão
    tipo: number
    padrão: 172
  • buttomHeight
    A altura em pixels do botão
    tipo: number
    padrão: 22
  • fileTypes
    Os tipos de arquivos permitidos. ex.: "*.jpg,*.png"
    tipo: string
    padrão: "*.*"
  • fileSizeLimit
    O limite de cada arquivo
    tipo: number
    padrão: 10000
  • multiple
    Definir se o upload será múltiplo
    tipo: boolean
    padrão: true
  • cursorType
    Definir tipo de cursor
    tipo: string
    padrão: 'hand'
  • dialogDescription
    O cabeçalho da descrição do diálogo de upload do browser
    tipo: string
    padrão:
    "Web Image Files"
  • columns
    Os rótulos das colunas na interface de upload
    tipo: object
    padrão:

    columns: {
    file : 'File',
    size : 'Size',
    action : 'Action'
    }
  • messages
    As mensagens usadas para darem as diferentes notificações
    tipo: object
    padrão:
    messages : {
    file_size_limit : 'You reach the total size',
    file_already_exist : 'Some(s) of the file already exist, the other(s) was included',
    browser_upload : 'Are you having problem with this upload? Try the common upload instead',
    start: 'Start upload',
    all_completed: 'All uploads are completed'
    }
  • totalSize
    O tamanho total dos arquivos permitidos. Pode passar em bytes, kb ou MB
    tipo: string
    padrão: '5 MB'
  • messageDelay
    O tempo que as mensagens de notifiação permanecem na tela
    tipo: number
    padrão: 3000
  • post_params
    Dados adicionais enviados via post para cada tipo de arquivo no formato chave : valor
    tipo: object
    padrão: empty object

Callbacks

onFileQueue(file)
onDialogClose(files_selected,files_queued,total_queued)
onSwfuploadLoaded()
onUploadStart(file)
onUploadProgress(file,completed,total)
onFileComplete(file)
onFileError(file,error,message)
onFileSuccess(file,data,response)


//formato dos parametros adicionais

post_params : {

"post_param_name_1" : "post_param_value_1",

"post_param_name_2" : "post_param_value_2",

"post_param_name_n" : "post_param_value_n"

},

Para uma completa referência das opções do swfupload, veja a documentação do swfupload

Dúvidas frequentes

Aqui está uma lista das dúvidas frequentes que podem ocorrer ao utilizar o jqswfupload:

Qual a vantagem deste plugin em relação a utilizar o swfupload sozinho?

SWFUpload é uma ótima biblioteca utilizada amplamente em grandes projetos para realizar uploads múltiplos. Ela torna fácil a integração do flash com a interface web que não seja puramente nesta tecnologia. Entretanto, o swfupload tem muitos eventos, callbacks e opções que permite a flexibilidade para o desenvolvedor criar a experiência completa de upload utilizando javascript para criar todo o dom necessário para fazer isto acontecer. Este plugin é baseado na experiência do usuário utilizada no upload de fotos do Flickr. Toda a interface pode ser customizada por CSS. Com algumas vantagens, o jqswfupload estende as funcionalidades do swfupload, como progresso geral de arquivo e limitação de tamanho máximo da fila, não simplesmente limitar o tamanho de um único arquivo. O plugin foi construído para tornar este tipo de upload da "maneira jQuery de ser" que com uma linha você pode ter tudo funcionando e você tem o objeto de opções para ter o poder de mudar de acordo com sua necessidade.

O upload retorna um erro 404, o que pode ser isto?

Provavelmente a opção upload_url do swfupload não está correta. Não se esqueça de tornar o link absoluto ou relativo ao caminho do plugin.

Eu segui todos os passo na documentação, mas aina aparece um input de arquivos normal, o que pode ter acontecido?

Provavelmente você não colocou corretamento o arquivo swf ou não modificou a opção flash_url. Não se esqueça que esta opção é relativa ao template.

Eu posso customizar todas as opções do swfupload?

Sim, usando o plugin você consegue usar os eventos do plugin que são análogos a vários eventos do swfupload, a diferença é que eles são acionados depois da interface gerada, sendo assim você pode personalizar e executar as ações que desejar

Eu fiz download do plugin e o arquivo upload.php não tem nenhuma lógica de realizar upload, o que aconteceu?

O script upload.php simplesmente prova que a cada upload realizado o script é chamado. O script pode ser escrito em diferentes linguagens de servidor e é assumido que quem esteja utilizando este plugin tem algum conhecimento prévio com envio de upload e o está utilizando para melhorar a experiência do usuário que é prejudicada com o upload de arquivos ormal. Se tiver algum exemplo de implementação do script de upload, por favor, entre em contato


Comentários

Assine o RSS para comentários

klawdyo comentou:

21st Janeiro, 2010 às 1:26 pm

A título de informação, funcionou normalmente no IE6.

Gabriel Lau comentou:

5th Março, 2010 às 11:09 am

Parabéns pelo plugin Alexandre, estava a tempos procurando um Uploader como este.

A princípio, está bem completo, dei uma olhada rápida pelos Callbacks mas não vi nenhuma função para “onAllFileComplete”.

Este recurso está incluso no plugin ou tem como implementá-lo?

Alexandre Magno comentou:

6th Março, 2010 às 6:37 pm

@Gabriel: Muito obrigado, fico feliz que esteja sendo útil. Esta funcionalidade estava com intenção de implementar para próxima versão. Abraços.

Fábio comentou:

19th Março, 2010 às 9:03 pm

Muito Bom, Parabéns.
Num próximo sistema ele estará.

Alexandre, dá uma olhada neste plugin.
http://jqu3ry.wordpress.com/2010/03/19/conheca-o-jquery-navmenu-criando-um-menu-dropdown/

é o meu primeiro, e bem simples. venho sempre acompanhando e aprendendo com seu blog cara.

Um abraço.

Alexandre Magno comentou:

21st Março, 2010 às 1:23 pm

@Fábio: Obrigado e fico muito feliz de ver seu blog e você contribuindo e saber que dei inspiração para isto. Está ótimo o Blog. Quando usar o plugin jqswfupload você pode compartilhar no teu blog a experiência com ele.

Estou trabalhando em próximas versões para ele, mas antes disto preciso ter testes que garantam seu funcionamento, principalmente por que ele usa uma biblioteca externa e para atualizar o swfupload é sempre um medo.

Muito bom o plugin, e fico feliz que tenha ajudado indiretamente com isto!

Marcelo Cajaíba comentou:

1st Maio, 2010 às 2:45 pm

Olá Galera nao consegui resolver o problema do erro 404 ele funcionava legal de uma hora pra outra parou de funciona, mesmo se eu colocar um outro arquivo baixado continua o erro já fui em main.js e mudei a url para ../upload.php e volte nao adiantou o mesmo fiz para jquery.jqswfupload.js e nada me ajudem por favor, ficarei muito grato

meu e-mail é marcelocajaiba@gmail.com abraços

Marcelo Cajaíba comentou:

1st Maio, 2010 às 3:19 pm

Resolvi o problema tirando o upload_uri do main.js

uploadUrl: upload_uri + ‘upload.php’
só que funciona mesmo é no ie6 nos outros da esse erro:

Error #2044: IOErrorEvent: não manipulado. text=Error #2038: Erro do arquivo de E/S.

Alexandre Magno comentou:

1st Maio, 2010 às 7:21 pm

@Marcelo: A variável upload_uri foi declarado no head do documento para obter a url base do projeto pelo script do servidor. Em algumas situações ela é necessária. Abraços…

Marcelo comentou:

2nd Maio, 2010 às 1:19 pm

Alexandre Obrigaod por responde amigo !
Como faço para que esse codigo não dê erro 404 no Mozila ?

como faço para alterar isso ? eu só vejo as opções de url no main.js e no jquery.jqswfupload.js

Provavelmente a opção upload_url do swfupload não está correta. Não se esqueça de tornar o link absoluto ou relativo ao caminho do plugin.

Marcelo comentou:

2nd Maio, 2010 às 2:56 pm

Galera tem como explicar passo a passo como corrigir o erro 404 pois vou no main.js e altero o uploadUrl : ‘upload.php’
ou vou em jquery.jqswfupload.js e altero a uploadUrl : ‘upload.php’ coloco ambos de com ../ ou vice-versa e nada. estou usando no localhost da minha maquina.

Alexandre muito obrigado por me responder, mas se puder tirar minha duvida ficarei muito grato amigo !

Marcelo comentou:

2nd Maio, 2010 às 10:08 pm

Galera nao sei o que acontece mas no meu computado dá erro nos seguintes navegadores Opera, Mozilla , chrome,

agora se eu acessar de outra maquina o erro nao aparece no mozilla e , chrome. o que está acontecendo ?

o erro é 404

Marcelo comentou:

3rd Maio, 2010 às 8:36 am

Galera tudo funciona perfeitamente, a cache estava armazendo os dados anteriores que contiam erro, foi só limpar e pronto. agora se eu quiser colocar um novo campo select como faço para passar o valor via get ou post para o arquivo upload, sendo pelo mentodo normal nao funciona ?

Marcelo comentou:

3rd Maio, 2010 às 11:53 am

Estou tendo problemas nao consigo passar uma variavel do formulário para o upload

tipo:

quero que no upload receber o valor

Marcelo comentou:

3rd Maio, 2010 às 11:54 am

exemplo

no main.js post_params : {
‘type’ : ’swfupload’,
‘codigo’ : ‘codigo’
}
nao funciona

Carlos Eduardo comentou:

2nd Julho, 2010 às 3:51 pm

o exemplo nao esta funcionando , eu tento carregar uma foto e so da o seguinte erro:

File Error: DSC04236.jpg

File Cancelled

poderia testar se esta tudo ok ?

Alexandre Magno comentou:

3rd Julho, 2010 às 1:30 pm

@Carlos: O file cancelled acontece geralmente por que o arquivo ultrapassou o tamanho máximo nas configurações do plugin. Mas de qualquer forma, ele mostra uma mensagem no canto superior da tela.

Leandro comentou:

16th Julho, 2010 às 10:15 pm

Alguém poderia me ensinar onde configuro o caminho do diretório para onde irão as imagens?

Alexandre Magno comentou:

19th Julho, 2010 às 12:22 pm

@Leandro: O diretório onde o upload será feito é feito no server. O plugin faz um post com os dados da imagem. Aconselho primeiro desenvolverem um upload simples, pois a dúvida não é está diretamente relacionada ao plugin. Abraços e boa sorte…

Deixe seu comentário

Os seguintes campos estão incorretos ou faltando

  • Listagem dos campos faltando
(Não será publicado) * Campos obrigatórios