Boa noite pessoal.

Essa mensagem é meramente informativa. Há alguns dias eu andei 
pesquisando aki na lista sobre o SWFUpload, pois eu havia gostado mto do 
sistema e queria utilizá-lo em um projeto pessoal.

O SWFUpload é feito em flash. Basicamente, ele fica oculto na página, em 
um elemento de 1x1 pixel. A função dele é apenas exibir uma caixa de 
diálogo de seleção de arquivos, e no caso de multiplos arquivos, 
gerenciar uma "fila de espera". Depois de criar essa fila, o SWFUpload 
faz uma requisição para um script externo (podendo sem em PHP, ASP ou qq 
outra linguagem) que é o verdadeiro responsável pelo envio dos arquivos 
da fila.
Para cada arquivo processado, ele devolve o estado do upload, dizendo se 
foi concluído com sucesso ou se houve alguma falha.

Gastei quase uma semana entendendo o funcionamento dele, e criando um 
painel de upload de fotos para um album no site que estava 
administrando. Horas e horas na frente do PC, e funcionou perfeitamente 
no XAMPP, instalado localmente apenas para testes.

Quando subi os arquivos para o servidor oficial, onde fica o website, 
nada do upload funcionar. Embora na interface disse que "todos os 
arquivos foram enviado com sucesso", e o SWFUpload retornasse sucesso no 
envio dos arquivos, acabei descobrindo (depois de mto suor, e com a 
ajuda do querido FireBug), que o servidor estava bloqueando o SWFUpload. 
Toda vez que ele requisitava o upload.php, era substituído por uma 
página de informação do servidor onde dizia que aquela ação era proibida 
por questões de segurança.

Entrei em contato com o admin do server, e juntos descobrimos a razão: 
Muitos servidor Apache trabalham com um módulo chamado mod_security 
(www.modsecurity.org) que faz uma espécie de "filtragem" nos cabeçalhos 
das requisições HTTP. Trabalha como se fosse um Firewall. Dentre as 
regras de segurança mais aplicadas pelo mod_security, estão a proibição 
de envio de arquivos de scritpt (PHP, JS, ASP, etc) e executáveis, e 
também o bloqueio de requisições onde o cabeçalho User-Agent não é 
enviado ou é enviado como null.

No forum do SWFUpload, dizem que ele envia um User-Agent chamado 
"Shockwave Flash", porém no log do servidor constava o User-Agent nulo 
mesmo. Após muitas pesquisas, descobrimos no forum da Adobe que na 
verdade, trata-se de um bug, não do SWFUpload, mas sim do próprio Flash 
Player, que substitui o User-Agent: Shockwave Flash por "Adobe Flash 
Player 9". Acontece que por algum motivo ainda não certo, isso não é 
passado para o servidor;

A unica maneira de contornar esse bug seria desativar a extensão 
mod_security, coisa que nenhum admin em sã consciência faria.

Resultado: Tive que refazer toda a parte do envio de fotos, e aguardar 
uma solução da Adobe para o problema.

O SWFUpload é uma ferramenta fantástica, que vale a pena ser utilizada, 
pois ajuda muito nesses casos de upload de vários arquivos, mas se for 
utilizá-la, tenha certeza que seu servidor será capaz de recebê-la bem; 
Assim vc não terá as msm dores de cabeças q eu tive por aqui.

Só por curiosidade, alguém também já passou por isso, ou conseguiu 
fazê-lo funcionar bem em algum projeto publicado?

Abraço a todos.

Mike



_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a