Weblosofia com CSS, Jquery, Javascript, Ajax, PHP etc.
por Alexandre Magno
Postado em Janeiro 21st, 2010 por Alexandre Magno
jQuery UI, projetos jQuery, SWFUpload e Jquery, Jquery, Javascript

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.
Os requisitos para o funcionamento do plugin estão listado abaixo:
Suporte:
* 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);
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
Aqui está uma lista das dúvidas frequentes que podem ocorrer ao utilizar o jqswfupload:
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.
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.
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.
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
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
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…
Os seguintes campos estão incorretos ou faltando