Este post está depreciado, favor ler o post:
jqswfupload – jQuery e swfupload em uma única linha
Desculpe a demora para voltar a escrever, estava atolado de projeto e como prometi, estava desenvolvendo um script para o jQuery em conjunto com a biblioteca SWFUpload. Bem, para quem não sabe sobre o que estou falando, há posts que contam como tudo começou:
Descobri o SWFUpload que é uma biblioteca bastante completa e que faz todo o background do processo. Então você tem vários parâmetros e callbacks que podem ser usados da maneira que preferir. Como já sou acostumado com o jQuery, resolvi usá-lo para fazer a parte do callback, ou seja, toda a interface que o usuário experimenta.
Devido as limitações do Javascript, da própria maneira de como é feito o upload de arquivos, temos que reconhecer que este sistema de uploads é uma revolução. Exagero? Como vocês faziam sistemas de uploads de arquivos antes? De cinco em cinco? usando iframe? Enviando os arquivos via FTP? E quando se trata de um sistema que será usado para um cliente?
Apesar de exisitir alguns plugins para o jQuery que tem esse objetivo, confesso que a maioria deles não tem a versatilidade e o poder oferecido pelo fancy upload, desenvolvido para o mootools. Os plugins que mais se aproximam para o jQuery são o Multiple File Upload, que é bom, mas não é versátil e o que ele faz é inserir campos de arquivo escondido e deixar para o usuário somente o registro do arquivo que foi escolhido. No lado do PHP estes campos serão tratados como arrays, bom, mas nada versátil e possui todas as limitações já existentes, uma delas é que você não sabe o tamanho do arquivo até ele ser jogado temporariamente no servidor. O outro é o jqUploader, que é desenvolvido em Flash, sendo assim, o jQuery faz a inserção on the fly do swf, mas a interface e o processamento é todo em flash. O SWFUpload triunfa por que ele usa o flash, mas você não sabe que está sendo usado. Pelo fato do Action Script possuírem classes que manipula arquivos de uma maneira bem mais versátil que o Javascript, além da classe external interface, que deixa o flash interagir com o html externo, esta biblioteca usa essas ferramentas para devolver ao desenvolvedor as respostas para serem usadas adequadamente.
Ao script
O SWFUpload oferece diversos callbacks para serem usados, ele pode ser manipulado por javascript. Usei o jQuery em conjunto com o plugin interface para oferecer uma experiência rica para o usuário fazer o upload de arquivos, como no Flickr.
Havia prometido um plugin, mas com um script ele poderá ser explicado e assim personalizado da maneira que acharem melhor.
Exemplo da interação do SWFUpload com o jQuery
A tarefa do SWFUpload
O trabalho do SWFUpload, como falado anteriormente é processar todos os dados utilizando o action script e devolver estes dados em tempo real para o ser manipulado via javascript.
Portanto, os scripts que precisam ser inseridos no cabeçalho são:
- SWFUpload.js – o script em si, retirado do site, aqui ele está compactado, mas no site tem ele completo e a versão mais atual
- SWFUpload.swf – O arquivo flash que faz o processamento, aconselho colocar no mesmo local do script acima, mas isto pode ser customizado.
- init.js – O script que cria o objeto da classe, com as configurações e a referência aos callbacks necessários
- callback.js – É onde eu entro utilizando o jQuery para facilitar a sua vida :-).
O arquivo que precisa de explicação pela parte do SWFUpload é o init.js que instancia o objeto e o inicializa. Ele permite várias configurações. Todas elas estão na sua documentação. Vou tentar descrever o que usei para fazer este script:
var swfu;
var init_uploader = function()
{
swfu = new SWFUpload({upload_script : '../upload.php',
target : "container_arquivo",
flash_path : 'swfupload/SWFUpload.swf',
allowed_filesize : 30720, // 30 MB
allowed_filetypes : "*.*",
allowed_filetypes_description : "todos arquivos...",
browse_link_innerhtml : "Procurar",
upload_link_innerhtml : "Enviar arquivos",
upload_file_start_callback : "inicioUpload",
browse_link_class : "btn_procurar",
upload_link_class : "btn_upload",
upload_file_cancel_callback : 'cancelado',
upload_file_queued_callback : "entrouFila",
upload_progress_callback : "progresso",
upload_file_complete_callback : 'terminoArquivo',
upload_queue_complete_callback : "fimDownload",
upload_error_callback : 'uploadError' });
swfu.loadUI();
};
//please use better handler attachment than this:
window.onload = init_uploader;
Acho que não precisa de muitas explicações, por que as funções já falam por si. Eu especifiquei as funções que serão usadas no callback.js para manipular as respostas, como por exemplo, quando seleciona um arquivo, quando inicia um download e a barra de progresso, todas elas aceitam alguns parâmetros, entre eles o objeto file, que tem várias propriedades, como o id que é uma identificação única do arquivo e graças a ele temos total controle do que está sendo feito com o arquivo. O arquivo upload.php é o script de servidor que faz a manipulação e copia para o local desejado, ele pode ser acessado via $_FILE[‘Filedata’]. A diferença desse para os plugins do jQuery que faz a manipulação dos uploads, é que não será manipulado por um array de arquivos, mas sim será chamado o upload.php para cada arquivo, ou seja, será enviado um por um da fila e seu controle será feito em tempo real, assim como a resposta para o usuário.
Este script é mais geral, você pode especificar os tipos de arquivos desejados. O bom nisto é que a caixa de diálogo exibida pelo flash você acessa o sistema de arquivos do cliente, mas só exibe os arquivos do formato especificado.
É hora do callback!
O arquivo callback.js possui toda a manipulação necessária e a inserção on the fly da lista de arquivos, nome, tamanho, botão de remover, barra de progresso etc. Tudo é feito via jQuery e com os efeitos do plugin interface.
Dê uma analisada no html, pois alguns elementos são essenciais para o funcionamento, pois através dele o jQuery faz inserções de conteúdo on the fly.
O arquivo css encontra-se abaixo e pode ser personalizado:
/* Upload de arquivos */
body {font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
#wrapper {
width: 600px;
margin: 20px auto;
border: 1px solid gray;
background-color: #FFFBEF;
}
#wrapper h2 {
text-align: center;
background-color: #3E458F;
width: 100%;
color: white;
padding: 12px 0;
}
#contentContainer {
width: 300px;
height: auto;
margin: 10px auto;
background-color: #FDFFEF;
border: 1px solid #9F8181;
padding: 20px;
}
#container_arquivo {
padding: 10px 6px;
margin: 8px auto;
}
#lista li {
width: 90%;
height: 75px;
margin: 12px 0;
padding: 6px;
background-color: #DBDFC3;
list-style-type: none;
}
#lista li a {
display: block;
}
.msg_fim_upload {
text-align: center;
color: red;
font-weight: bold;
padding: 5px;
background-color: #FFE7DF;
}
.btn_procurar, .btn_upload {
padding: 4px;
background-color: #E0E3EF;
border: 1px solid #74798F;
margin: 10px;
text-decoration: none;
}
.btn_procurar:hover, .btn_upload:hover {
background-color: #DFDFDF;
}
.arquivo {
font-weight: bold;
color: #6F3039;
}
.campo_peq {
border: 1px solid gray;
font-size: 10px;
background-color: #E5EFE0;
margin: 6px 5px 0 5px;
}
.barra {
background-color: green;
color: white;
width: 1px;
margin: 4px 0;
border: 1px solid gray;
text-align: center;
display: block;
}
/* fim do upload de arquivos */
Alguns dessas estilizações são para a demonstração online e outros são para o funcionamento adequado do script.
O script foi testado no Firefox 1.2.xx, no IE6 e IE7. Nestes dois últimos, há uma pequena falha na animação, mas devido ao interface. Se não gostou do resultado do efeito, ele pode ser alterado pelo callback nas linhas que tem os métodos Grow(crescer) e Shrink(encolher).
Espero que tenham gostado e que façam bom proveito deste script e qualquer dúvida, estou a disposição.
nossa, ficou mt legal seu exemplo, quando chegar em casa vou testar concerteza 🙂
Tenho algumas perguntas:
1- Até hoje nao consegui entender como funciona o loadUI() do SWFUpload!! Sera q vc pode me explicar como funciona exatamente?
2- Estou pensando em usar alguma library de JavaScript no meu projeto! Preciso mt dos seletores de elementos, do tipo: PEGUE OS ELEMENTOS “X” QUE POSSUEM A CLASSE “Y” e ID “Z”.
Pensei em usar o Mochikit ja que os nomes que ele usa segue uma semantica mt boa que estamos acostumados. Mas estava olhando o JQuery e o MooTolls e achei bem interessante tb, e a semantica dos dois sao bem parecidas, mas ainda prefiro a do Mochikit! A pergunta é a seguinte: Qual Library vc me recomendaria e pq? Existe alguma vantagem em usar uma ou outra, ou depende mesmo do desenvolvedor?
Vlw cara.. otimo trabalho! 🙂
Creio que o loadUI seja para carregar a interface do swfUpload, ou seja, os botões, e o flash do background depois de ser instanciada a classe, mas não tenho certeza, pois já pesquisei e nunca achei algo a respeito.
Cara, eu uso o jQuery para tudo, já tentei usar outras, mas me senti confortável e tudo flui mais facilmente para mim com a jQuery. Então sou suspeito para falar. Acho bom você experimentar e ficar com a que você tem mais facilidade e tem mais vantagens para você. O jQuery tem vantagens que eu buscava como separação de javascript e html, sem utilização de eventos inline, isto eu gostei bastante, além da grande variedades de plugins, que ajuda ela a ser bastante estendida. Pelo que você está falando, esta lógica de pegar o elemento tal da com a classe “X” é típico do jQuery, outras possuem lógicas assim, mas o jQuery funciona baseado nisto, pegar os elementos e executar médodos e eventos com eles. E já escrevi posts comparando o jQuery com a prototype, mostrando que para muitas coisas o jQuery gasta menos código. É uma escolha que tem que ser feita e a única pessoa que tem de escolher é você. Elas estão aí para ajudarem e não para competir, tem frameworks para todos os gostos e isto é bastante pessoal, portanto, experimente e descubra qual foi feita para você.
Parabéns Alexandre excelente Plugin! Vou te dizer um dos mais interessantes e desafiadores q já vi sobre Jquery….
Parabéns…
Como posso fazer pra passar uma variável junto com o upload.php criada na pagina onde se carrega todos os js?
Agradeço desde já….
Muito obrigado pedro…
Não endendi direito sua pergunta, você quer passar outras variáveis para o arquivo upload.php??? abraços…
Exato leandro…. eu criei uma session e chamei ela no upload.php funcionou só no ie… oq eu quero é passar para o upload.php o id q veio no get da página onde tá o sisteminha de upload….
Muito bom todou o plug in y muito obrigado eu quero me desculpe o meu portugues as malo todou isto es porq eu so do venezuela y meus avous son no portugal Então eu no se muito escrivir no portugues, la idea es eu necessito saber o que tene u arquivo da php eu penso que en el arquivo tene que tener as funciones associadas a $_FILE u problema es que isto ya eu tenho feito y nada não passa os arquivos para meu servidor
boa tarde José Manuel, sem problema em relação ao seu português, consegui entender tranquilo, me diga uma coisa, vc está tentando acessar o arquivo por $_FILE[‘Filedata’]?
abraços…
Muito obrigado por a resposta Agora eu logre fazer la subida do arquivo porém eu tenho dois problemas o primero é que eu quero fazer somente uma sola subida da arquivo não multiples
u segundo é que eu quero passar uma variável junto com o upload.php já que eu neccesito fazer um query base de dados muito obrigado eu não esperava a sua resposta tão rápido
Bem, se quer enviar somente um arquivo, basta inserir um só, cada arquivo inserido será chamado o upload.php.
Outros usuários estão tendo problemas para passar as variáveis para o upload.php, em relação a isto vou ficar te devendo e vou pesquisar a respeito e assim que descobrir eu te falo, mas que tipo de variável você quer passar?? Todas as informaçoes do arquivo podem ser passadas e assim serem inseridas no banco , copiadas etc… espero poder ter ajudado, pode contar comigo para o que precisar, abraço…
Para todos que tem a dúvida sobre como passar variáveis para o arquivo upload.php, aqui vai um truque, não uma solução, mas funciona hehehe…
Se você for passar via get, no head do documento crie uma variável javascript que irá conter o as variáveis com os seus valores em código php, por exemplo:
var valores_get = 'upload.php?variavel=' + '';
E no javascript externo você especifica essa variável no upload_script do swfupload.
Via post é possível por ajax, principalmente se for pegar dados de um formulário, mas isto fica para o plugin do jQuery e o assunto do próximo post.
Espero ter ajudado a todos e se precisarem, estamos aí…
Muito obrigado,
porém eu e pesquisado a he consegui que as links y todo isso se faze desde js por isso es que eu estuve pensando a que se pode fazer desde u swfupload.js criar um input type hidden y atribuirle um valor y depois tomar u valor na upload.php com post não sei si isto pode funcionar u otro is que eu necesito so que a usuário não pode subir mais de um arquivo so um
Valores do tipo hidden acho que podem ser acessados por $_POST.
Para limitar para apenas um download, você terá que personalizar os callbacks que eu criei, dê uma olhada nesta documentação http://swfupload.mammon.se/documentation.php#upload_file_queued_callback
O parâmetro queuelength controla quantos uploads entram na fila, assim você pode limitá-lo para um e usar dentro do script, como por exemplo um alerta de que só é possível adicionar um e cancelar todos que ele adicionar se ultrapassar o valor permitido, neste caso o 1.
Espero ter ajudado, abraços…
Alexandre, mto bom. Era algo exatamente assim que estava procurando. Porém eu consigo fazer o upload com ASP? como seria o resgate e o upload de fato dos files enviados para um arquivo upload.asp? Abraço
Boa tarde Jean, você consegue sim fazer com asp, basta você saber que o input file tem o atributo name de ‘Filedata’, então é só usar o script de servidor normalmente, que ele será chamado para cada upload e não como um array de arquivos.. se precisar é só falar… abraços…
Cara, parabéns pela implementação, já sou fascinado pelo JQuery, e agora pelo SWFUpload, 🙂
Vou ver se crio um componente p/ ASP.NET que implemente a sua solução!
Abraços!
Obrigado tiago… fico feliz que tenha gostado e que o script tenha sido útil, um abraço…
Bom dia, Alexandre!
Demais o artigo e a solução! Estive estudando a técnico durante 1 dia inteiro (hhehehe, sou lento), mas o que realmente está incomodando é que manuseando upload (buscando arquivos, enviando, buscando outros e enviando) o firefox simplesmente quebra! Estou usando a versão 2.0.0.9.
Recebeu algum tipo comentário sobre isso? Agora estou estudando a API do Flash pra tentar descobrir o que pode estar acontecendo…
Fora isso, parabéns!
Se precisar algo, é só chamar no gtalk…
Abraços
Alexandre, esqueci de mencionar que uso kubuntu 😛 que faz toda a diferença no comportamento do firefox…
Muito bala o teu exemplo, é oque eu mais queria, parabéns!
Estou usando ASP com o componente aspSmartUpload.SmartUpload para o upload, li nos comentários acima q tem q pegar o ‘Filedata’… não consegui fazer funcionar… já conseguiu fazer funcionar com o ASP? Valeu, parabéns pelo artigo.!
@João: O que você quer dizer com quebrando??? Assim eu posso saber melhor do que se trata. Abraços.
@Diego: Em alguns comentários atrás já teve algém que tentou implementar no ASP. Tente olhar se os caminhos estão corretos, pois os arquivos são enviados como um input file normal via post ‘Filedata’. Abraços…
João eu consegui arrumar, estava fazendo errado. Utilizei aspSmartUpload usando assim:
set file = mySmartUpload.Files(“Filedata”)
file.SaveAs(“../folder/” & file.FileName)
O único problema que estou tendo agora é com os arquivos acentuados, que são salvos com caracteres todos bagunçados, alguem saberia me ajudar ou como eu faço para q isto não aconteça…
valeu !
Não recomendo usar nome de arquivos com acentuação, o ideal seria retirá-los ao processar e salvar o arquivo…
Obrigado pela solução Diego.
Olá a todos!
“Quabrando” eu quis dizer que o firefox simplesmente fecha (isso só acontece no linux) quando eu faço upload de 1 ou vários arquivos. Às vezes o upload vai até o fim. Às vezes, “quebra”. Acho que se trata do plugin flash pro linux, pois testando no IE on linux, IE e firefox no windows, tudo fica perfeito. Uma pena.
Ainda não achei um “workaround” pra isso. Se souberem, por favor, me avise!
Obrigado a todos!
Olá Alexandre,
Consegui implantar ele no ASP, está funcionando. Porém quase sempre durante o upload, ele me mostra a mensagem abaixo em uma caixa de alerta:
“A script in this movie is causing Adobe Flash Player 9 to run slowly. If it continues to run, your computer may become unresponsive. Do you want to abort the script?” quando clico em NO ele continua normalmente até o fim. Sabe o que pode ser isso?
Obrigado!
Olá Jean, este problema é devido ao fato do flash ter um limite de tempo de execução de script, provalvemente você estava enviando um arquivo muito grande. Não postei sua resposta antes por que o site do swfupload com o link para corrigir o problema está fora do ar, de qualquer forma, no site http://swfupload.mammon.se/index.php há a solução. E no fórum http://swfupload.mammon.se/forum/viewtopic.php?pid=225 também foi postada a solução para isto. Infelizmente eles ainda estão fora do ar, mas deve estarem de volta logo. Espero ter ajudado, um grande abraço!
Parabéns pelo script. Adicionei uma Select junto ao Form mas não estou conseguindo passar o valor dela, poderia me ajudar?
Parabéns pelo script.
Estou com um problema veja se você pode me ajudar no arquivo onde seleciono umas fotos tenho uma select, como faço para passar o valor da select para o arquivo upload, estou usando asp.
Obrigado
Olá.
Grato pelo script! realmente surpreendente.
Estou fazendo algumas modificações e gostaria de passar algumas variáveis pro upload.php.
Vi nos comentários vc dizendo para criar uma variável e depois seta-la na variável upload_script. Porém, essas variáveis somente são populadas depois que o usuário seleciona os arquivos.
É possível setar o upload_script DEPOIS que o script flash for chamado ???
Já estou a dias tentando fazer isso e lendo documentações e ainda não consegui resolver.
Grato!
@David: Já tentou processar o select no action do form? Também você pode pegar o valor do select via script e passar por get pelo método que está citado nos comentários, de passar por get no arquivo de upload.php se não for muitos dados. Espero ter ajudado…
@Marcos: Por enquanto não consegui uma maneira de fazer isto, mas estou tentando, realmente nunca vi isto, mas para que você quer setar antes? Abraços…
Ae, alguem consegui resolver o problema de SESSION no FIREFOX que o Pedro Wallauschek mencionou? ta osso isto.
Pedro Wallauschek comentou:
28th Setembro, 2007 às 4:02 pm
Exato leandro…. eu criei uma session e chamei ela no upload.php funcionou só no ie… oq eu quero é passar para o upload.php o id q veio no get da página onde tá o sisteminha de upload….
olá alexandre, sou iniciante do jquery, tentei utilizar o seu exemplo, carreguei os arquivos e tudo mais, só que na hora de clicar no botao procurar meu compilador diz : “this.movieElement.browse is not a function”;
chegou até travar meu browser,… rsrs.. Bom como eu acredito que esteja fazendo alguma coisa errada. Pode me ajudar estou precisando dessa dica. Obrigado
@cleber: Me parece que ele não está identificando o arquivo swf. Tente verificar o local especificado no javascript com o local que o arquivo swf está.
Olá Alexandre, fascinante esse artigo, parabéns
Estou tentando acessar o site http://swfupload.mammon.se/ para baixar o swfupload, mas o link não funciona.
Você teria outro link para baixar o swfupload ou o link para baixar o código fonte do exemplo desse artigo?
Obrigado
Muito obrigado Antônio. Há algumas semanas que não está funcionando e tive este mesmo problema. Agora descobri que ele mudou de endereço e o site está de cara nova. Devem ter ficado famosos :-).
SWFUpload: http://swfupload.org/
Fiz uma função com php que era pra criar a thumb e uma outra imagem da imagem proveniente do upload. É pra funcionar normalmente ou precisa fazer alguma alteração no sistema?
Tentei aqui mas não funciona por completo.
A função faz o seguinte:
– Cria uma pasta raiz e mais duas dentro dela. Thumb e Final.
– Renomeia as imagens.
– A partir da imagem original de upload, cria a thumb e a final (com assinatura).
– Salva dados no bd
A única coisa que a função tá fazendo até agora é criar as pastas. Nem o upload tá rolando, não entendo pq.
Se alguém puder ajudar, valeu.
Olá estou tentando tentando enviar variaveis para dentro de upload.php usando a seguinte linha
// Max settings
swfu = new SWFUpload({
upload_script : “../multupload/upload.php”,
post_params: {“categoria”: “”,”name_topicos”: “”,”list_thumb”: “”,”alt”: “”,”type_galeria”: “”},
acontece que somente com essa linha a variavel não é postada.Eu só consigo enviar se registrar todas as variaveis acima na sessão e recupera-las com $_SESSION[‘variavel’] dentro de upload.php.gostaria de saber como faço para postar a variavel sem transforma-la numa variavel de sessão.
Muito agradecido Salomão
@Salomão: Você já tentou passar por query string no upload.php? (ex: upload.php?var=teste)
olá Alexandre, tudo bem? funcionou às mil maravilhas, uma pergunta como posso validar , se o user clicar enviar sem seleccionar imagem dá msg enviado com sucesso como posso uma msg de erro?
Abraço
como versão 2.1 quebrou tudo , a tua era a 1.2 correcto?
abraços
@Nuno: Sim nuno… a versão é 1.2… irei refazer este plugin com mais opções e usando as versões mais recentes, por que usava o interface para as animações e o jQuery 2.1 não aceita bem.
valeu Alex 🙂
Muito interessante essa ferramenta, Alexandre !
Mas não consegui fazer funcionar o envio de outras variáveis ao servidor. Mesmo a última versão do site (http://code.google.com/p/swfupload/) não está reconhecendo a função “addPostParam”.
Gerei um handler “upload_start_handler” e tentei adicionar algumas variáveis, mas o javascript chiou dizendo que a função “addPostParam” não existe.
Você conseguiu testar isso?
Abraço, Odilon
Oi Alexandre… boas novas. Para que você não perca seu tempo testando – é bug da versão 2.02. Baixei a versão 2.1.0 Beta e.. show !
Abraço, Odilon
@Odilon: Que bom. Eu não fiz testes com as versões mais novas, mas pretendo lançar uma versão nova e deixá-lo mais com a cara de “plugin”. Abraços e boa sorte
Essa ferramenta é show.
Agora tentei passar uma variavel para o upload.php pois preciso fazer o upload em pastas diferentes alem de gravar no banco de dados o nome das imagens.
Vi que vc colocou uma dica para passar a variavel atraves de javascript, mas não tive sucesso.
Vc tem como me ajudar nisso?
Abs
@Adriano: Tem como você me passar um exemplo mais detalhado do que está acontecendo. Analisando superficialmente pelo que você disse você colocou a atribuição da variável antes do arquivo javascript que irá utilizá-lo? Abraços…
Então… eu atribui a variavel que dentro do FORM onde eu faço a busca pelo arquivo para fazer o upload, nesse form tenho um INPUT TYPE=HIDDEN onde passo a variavel.
Dai quando mando enviar os arquivos, ele faz o upload corretamente porem o valor passado pela variavel não é atribuido e tbm não consigo inserir no BD o nome de cada imagem q estou fazendo o upload.
@Adriano: atribui a variável no head do documento e passe para o javascript. desta maneira:
E acesse a variável teste dentro do javascript no parametro da url passando ‘upload.php?teste=’+teste
É um truque mas funciona para esta versão do plugin. As novas versões do SWFUPLOAD permite uma manipulação melhor de passar variáveis e ficará para uma próxima versão.
Oi Alexandre, achei muito massa essa ferramenta, realmente acho uma revolução. Mas não to conseguindo fazer funcionar tinha feito tudo do jeito que se pede, ai ao rodar percebi recebi a mensagem de erro:
“jQuery.dequeue is not a function.”
Pesquisei e descobri que era um conflito com a versao do jQuery e a correção eu encontrei aqui:
http://theneubeck.blogspot.com/2007/11/jquery-interfacejs-issues.html
Pronto resolvido o problema, nao aparece nenhuma mensagem de erro no meu browser(Opera 9.27) e nem no IE7. Eu ja testei meu upload.php e tah funcionando quando eu mando input file “Filedata”. Mas quando clico em “Enviar arquivos” ele mostra as barras de status enchendo até 100% mas e da a mensagem que os arquivos foram enviados, mas olho no server e nao foram enviados. nao consigo entender onda ta o erro.
Blz, até ai tudo bem, agora como pegar essa variavel dentro do upload.php ?
quando q irá sair a proxima versão?
@Marcos: Deve ser algo errado no servidor. Ele não retorna algum erro? Você está executando local?
Sim, to executando localmente, mas nao retorna nenhum erro, parece que tem haver com o input file. existe algum download desse sistema pre-configurado? ja com o upload.php?
vo continuar debugando aqui pra ver se axo o problema.
@Marcos: eu tinha um arquivo assim, mas tenho que procurar. Como isto foi muito pedido, vou fazer de tudo para disponibilizá-lo aqui no blog. A implementação que tenho dele é em cakePHP por que eu geralmente o uso nos sistemas que crio. De qualquer forma, vou colocar um padrão do arquivo php, mas basicamente deve estar havendo algo de errado no envio ou você pode verificar o log do apache para saber se efetivamente não houve nenhum erro. Espero ter ajudado. Abraços.
Não consigo pegar o arquivo “upload.php”.
Teria como disponibilizá-lo via texto?
Obrigado!
@Roger: O scrip que desenvolvi foi feito utilizando o cakePHP. Pelo fato de ter várias opções de se processar o arquivo e fazer o upload, não disponibilizei um script de exemplo. Para conseguir manipular o upload no servidor, quem utilizar o script deve ter um pouco de conhecimento em uploads de arquivos sem esta técnica, por que o código servidor não muda, você precisa apenas acessá-lo via Filedata. Espero ter ajudado, abraços…
para acessar o upload.php acesse o endereço:
http://code.google.com/p/swfupload/
baixe o script completo
Muito bom cara, mas estou com um problema tipo estou usando localmente dai eu envio os arquivos todos mas queria saber como ficaria o arquivo upload.php tipo assim como eu faria para salvar na mesma pasta ? ja tentei varios tipos mas não consigo acessa o arquivo vindo do form, ja tentei $_POST[‘Filedata’] etc me ajude ai vlw abraços.
E se eu quiser agressentar mais campos input como irei pegar os campos?
@Felipe: O problema por você não estar conseguindo acessar os arquivos que foram feitos upload provavelmente é devido a url errada. Você está usando o action do form ou passando nas configurações o target do form?
Para acrescentar mais campos foi introduzida na versão mais nova postParams que envia dados via post, e estou atualizando o plugin para aceitar isto.
Bom não consegui se puder fazer um tutorial a parte encinando eu agradeço.
Olá Alexandre,
antes de tudo, meus parabéns pelo post. O script é fantástico e eu gostei muito dos callbacks. Eu consegui fazer o script funcionar perfeitamente, exceto por um pequeno detalhe (é bizarro, veja se entenda): na minha casa o script funcionou perfeitamente no IE, mas no FF não. Aqui no trabalho foi o contrário, funcionou no FF, mas não no IE. Pedi para amigos em suas casas e o pessoal do trabalho aqui pra testar em seus computadores e não obtive nenhum padrão: em alguns computadores, funcionava em todos browsers, em outros, variava. Além de tudo, quando não funciona ele não retorna erro algum. O problema que acontece é que, quando se clica em “Procurar” para abrir a caixa de seleção dos arquivos, ela simplesmente não abre. Você tem idéia do que pode ser isso? estou revirando o código e quebrando a cabeça com isso, mas até agora não tenho idéia do que possa ser. Obrigado pela atenção, []’s.
@Caio: Algum desses computadores não tem flash? As vezes ela não abre por falta do plugin, só que neste caso aparece o input file normal. Isto acontece também se tiver algum erro de Script, que no Firefox pode continuar funcionando e no IE qualquer erro de script impede o funcionamento de tudo. Pelo que você me falou não consigo dizer muito além disto. Estou trabalhando numa nova versão do plugin que pode melhorar isto. Abraços e boa sorte….
Parabens pelo script e pela explicação.
Tenho um site de eventos e toda vez que tinha de enviar as fotos era uma por uma, agora seleciono tudo e envio de uma vez só.
Baixei o script 2.1 do site deles e dei umas adptadas para o meu caso, tipo apresentar as miniaturas das foto enviada, gravar informações no banco de dados e etc..
Tava mt tempo atraz disto. Viva o oráculo “google” que me trouxe aqui e viva a vc pela explicação..
OBS.:
Ao pessoal que usa php e não ta conseguindo enviar as variaveis via get, eu usei em dois lugares.
no script:
upload_script : “upload.php?CI=”,
e no form também:
”
funciona perfeito!!!
Abração.
nao apareceu explicação do form:
form action=”down_cad_upload.php?CI=”
@Daniel: Muito bom Daniel, parabéns pela iniciativa. É assim que a gente começa a encontrar soluções. Estou trabalhando na nova versão do Script, deixá-lo totalmente compatível com o jQuery. Quem sabe você pode até dar uma força. Abraços e boa sorte!
Gostaria de saber se tem alguma explicação para o problema que esta acontecendo, estou usando o script para envio de fotos pro servidor, mas o que acontece e o seguinte, clico em adicionar imagens, seleciono as imagens, clico em enviar ele faz o processo ate encher o 100% diz que upload completo, mas aparece um x na foto de erro e tb nao aparece erro algum pra saber o que foi, ja fiz de tudo que sabia estou usando o servidor http://www.kinghost.com.br nao sei o que fazer preciso de ajuda.
Tive problemas com o SFWUPLOAD com a nova versão do flash player (v10). O desafio agora é fazer a mesma estrutura que desenvolvi se adaptar ao novo código do sfwupload já disponível para download.
Amigo… peguei os arquivos .. so nao achei o upload.php onde encontro o arquivo? se puder mandar o arquivo por email… pois creio que precise desse arquivo pra ser enviado os arquivos … certo?
@Fernando: posso enviar a implementação que fiz no cakePHP. Muitas pessoas me solicitam o arquivo no PHP, mas gostaria de lembrar que é apenas recebê-los como um FILE normalmente e utilizar a função move_uploaded_file. De qualquer forma irei enviar a versão em cakePHP para ver se ajuda. Abraços.
manda sim.. ele todos.. outro detalhe… quando o sistema faz o upload.. onde ele coloca os arquivos… eu queria ter a possibilidade de escolher qual diretorio as fotos ou arquivos serao postados… da um help ai .. ok.. abração garoto…
Nao sei o q acontece..nao consigo rodar isso ai…clico botao pra procurar fotos, e nao faz nd…
alguem me ajuda?
Se alguem puder mandar isso ai implementado em asp classico eu agradeço =]
E ai pessoal, tranquilo..
Então…estou com o mesmo problema do Rafael, quando clico no botao procurar não abre a janela de selecionar arquivos, nem no exemplo do site aqui não abre também, alguém sabe o q deve ser? se falta algum código?
Obrigado.
@Joao: Qual a versão do flash player? O player 10 do flash teve algumas modificações que prejudicaram esta versão do SWFUpload e existe uma para este fim que não foi testada ainda com o script.
O flash player 10 não aceita mais a integração de comandos do browser com o action script, agora será obrigatório que o botão seja um elemento do flash para que o upload possa funcionar. Terei que fazer as devidas adaptações para este caso.
Aguardando as devidas alterações pro caso do flash player 10.
Espero retorno da atualização do seu código.
Olá Caro Alexandre Magno, eu trabalho com web já tem algum tempo. Na empresa que trabalho usamos bastante o swfupload. Eu vi que o pessoal não conseguia instalar a nova versão e criei um tutorial de como usá-lo. Eu juro que não sabia do seu site até o presente momento, mas é muito bom saber que existem pessoas como você que precederam a divulgação de como fazer.. Bom, se estiver afim, eu te passo o link.
Abraço e parabéns pelo site.
Testei no IE7 e não funcionou. não tem ação no botão procurar!
@Eduardo: Como informei no início do post, este post está depreciado, eu desenvolvi um novo plugin: http://www.alexandremagno.net/blog/2009/07/22/jqswfupload-jquery-e-swfupload-em-uma-linha/
Espero que ajude, abraços…
Necessito para celular tem como?
@Paulo: Paulo, este modo de fazer download não funciona bem no celular devido a necessidade do flash. Atualmente existe formas melhores de fazer, dê uma olhada na nova api de upload do HTML5: https://developer.mozilla.org/pt-BR/docs/Using_files_from_web_applications
Espero ter ajudado. Boa sorte e abraços