Upload com vraptor3 + uploadify [resolvido]

[quote=Lucas Cavalcanti]então, renanpto, o problema aqui é que ele quer fazer o upload de vários arquivos ao mesmo tempo… e isso não tá rolando…

o que dá pra fazer tb é fazer os uploads um por um (do mesmo jeito que o orkut faz pra adicionar fotos, por exemplo)… [/quote]

Sim, vou fazer o upload um a um.

Obrigado pela ajuda.

[quote=cordjr]renanpto realmente está muito estranho isso… :shock: não sei se isso ajuda mais a versão do vraptor homolaga aqui é a 3.0.2
e está funcionando perfeitamente. os javascripts são aqueles que vc citou. Outra coisa vc já tentou injetar um httpServletRequest e verificarse os parametros estão realmente lá ? [/quote]

Acabei saindo as 4 horas e voltando agora pouco… e fui dar a ultima olhada no fonte.

E adivinha, encontrei o problema que estava rolando que nem um unico arquivo usando esse plugin não chegava no metodo da controller.

O problema é o seguinte, tenho um componente que resolve urls não encontradas. No jsp a url que faz o upload estava terminada com “/” e no controller na anotacao @Path o mapeamento terminava sem a barra. A requisicao chegava nesse componente, que tem a logica q verifica se a url é terminada com “/”, se sim ele tenta invocar uma nova url sem a barra no final… assim invocava a url correta mas de alguma perdia os parametros vindos do flashzinho que deveriam ser passados pro metodo. Os parametros vindos pelo url, continuavam sendo setados normalmente.

Todo esse trabalho por uma “/” na url.

Isso ai, obrigado pela ajuda =D.

Já q o assunto é uploadify, peço ajuda a quem ja conseguiu enviar as fotos para a pasta de uploads…
Eu havia conseguido enviar os endereços para o banco, junto com a data do upload, redimensionar os tamanhos e enviar para a pasta uploads quando trabalhava localmente…
Agora tive q pôr no servidor para teste e não funciona mais a parte d ir para a pasta uploads…

Alguém já passou por isso? Sabem como ajudar?

Agradeço!

vc precisa conseguir um File que aponta pra essa sua pasta de uploads…

o problema eh que no servidor vc só conhece pastas dentro da sua aplicação (até dá pra pegar pastas absolutas do sistema, mas é meio ruim fazer isso)…

vc vai precisar fazer algo do tipo:

String path = servletContext.getRealPath("/pasta/dentro/da/sua/aplicação");
File pastaUpload = new File(path);

e daí é só salvar os uploads dentro dessa pasta…

[quote=Lucas Cavalcanti]vc precisa conseguir um File que aponta pra essa sua pasta de uploads…

o problema eh que no servidor vc só conhece pastas dentro da sua aplicação (até dá pra pegar pastas absolutas do sistema, mas é meio ruim fazer isso)…

vc vai precisar fazer algo do tipo:

String path = servletContext.getRealPath("/pasta/dentro/da/sua/aplicação");
File pastaUpload = new File(path);

e daí é só salvar os uploads dentro dessa pasta…[/quote]
No nosso projeto nós deixamos o caminho para a pasta de uploads configurado num arquivo .properties.

Por exemplo quando for fazer upload, a aplicacao utiliza esse caminho + caminho onde salvará o arquivo.

Unica vantagem dessa forma é se voce precisar salvar os arquivos fora do contexto da aplicacao. FIca a dica =D.

Pessoal, consegui enviar para a pasta d uploads e para o bd tb, só q para o bd foi com 1 endereço e para a pasta com o completo, como vcs sugeriram…
O poblema agora é q não consegui enviar junto o cd_album…
Esse código vem por get para a página fotos.php e aí coloquei ele num formulário para enviar junto com as fotos q estão sendo incluídas… coloquei num campo hidden assim:

Aqui recebe por GET no arquivo fotos.php:
$cd_album=$_GET[‘codigo’];

Aqui está o formulário q vai enviar essa variável:
<input type=“hidden” id=“codigo” name=“codigo” value="

E lá na parte do script eu coloquei
?scriptData? : {?codigo?:$(?#codigo?).val() }

E para receber no arquivo uploadify.php eu coloquei:
$cd_album = $_POST[‘codigo’]

Mas não foi para lá… Vcs sabem o q pode ser?
E outra coisinha: não está mais funcionando no Mozilla :shock:… o botão perde a propriedade e fica como um input file normal q envia as fotos d a uma. No I.E funciona.

Agradeço a atenção d vcs.

Ué, mas isso aqui não é um fórum de Java? :roll:

Desculpem se postei no lugar errado… Mas eu postei aqui porque vi q estavam falando do jquery uploadify e estou tendo dificuldades em implementar ele com php e javascript :?.

Não consigo enviar uma variável diferente para o arquivo do uploadify.php q é o q está manipulando as fotos q eu envio :cry:
Não consigo fazer funcionar no Mozilla :cry:

Tá complicado…
Acho q vou procurar algum plugin q seja mais fácil d usar para upload de múltiplos arquivos…

Se alguém já passou por isso e puder ajudar, eu agradeço.
Obs.: estou trabalhando com php estruturado.

as aspas estão corretas?

tenta usar o plugin Firebug no firefox e ver se tá dando algum erro de javascript…

Ou então para teste passar um valor fixo:

"scriptData" : {"codigo": 10 }

Lucas, no lugar dos ? são as aspas simples q eu coloquei.

garcia-jj, vou tentar fazer da maneira q vc falou para ver se vai um valor para lá!

E sobre o botão perder a formatação no mozilla, vcs tem ideia do q possa ser?
Agradeço as dicas, assim q eu conseguir fazer os testes vou postar aqui!

O teste com o valor fixo não funcionou, e o problema com o uploadify com o mozilla é em certos computadores… testei de outros 2 e o botão aparece, e em compensação em outros 3 não apareceu.

Não sei qual o requisito para q funcione em todos os pcs… no i.e. funciona legauu, mas tem q funcionar no mozilla, pois é um trabalho da faculdade e escolhemos ele como navegador padrão!

Continuo tentando fazer o cd_album ser processado pelo uploadify.php…

Ola

Estou tentando usar também uploadify, mas esta dando o seguinte erro: o HTTP Error 302.
Alguém tem idéia do que pode ser???
Tem outra forma de fazer uploads de múltiplos arquivos??? Tentei usar um input com vetor (Ex: arquivo[]), mas acusou erro.

Fico do aguardo
Obrigado

estranho, pq 302 não é um erro, é um Redirect!

vc tá fazendo algum redirect na sua lógica?

vc tá usando a versão 3.1.3 do vraptor?

Ola

Estou usando a Versão 3.1.2

Meu método no controller

public void anexar(UploadedFile uploadify, String sessionId){
	//Nem criei ainda a lógica do método, 	só tem um system para verificar se o arquivo esta chegando
         System.out.println("Arquivo:"+uploadify.getFileName()); 
}

O javascript

$(document).ready(function() {
	$("#uploadify").uploadify({
		'uploader'       : '${pageContext.request.contextPath}/js/uploadify.swf',
		'script'         : '${pageContext.request.contextPath}/projeto/anexar', 
		'cancelImg'      : '${pageContext.request.contextPath}/img/cancel.png',
		'folder'         : 'uploads',
		'queueID'        : 'fileQueue',
		'auto'           : true,
		'scriptData'     :  'sessionId: ${pageContext.request.session.id}',  
		'multi'          : true,
		'onError'        : function(event, queueID, fileObj, errorObj){
								alert("Error: " + errorObj.type + "\nInfo: " + errorObj.info);
			}			 
	});
});

atualize para a versão 3.1.3 (precisa mudar o jar do paranamer pra 2.2 tb) e coloque no input o nome de arquivos[] , e então receba no seu Controller um List arquivos

ou substitua o nome arquivos pelo nome que o uploadfy usa… mas eh importante que tenha o []

Olá pessoal segui todas as recomendações do post, mas nao consigo fazer upload de multiplos arquivos, meu controller está recebendo apenas 1 arquivo, nunca a lista selecionada. Utilizo o vRaptor 3.3.1

no JSP está

<input id="inputArquivos" type="file" name="arquivos[]" />

no método eu tenho

public void processarArquivos(List<UploadedFile> arquivos, String ano, int categoria){
     //faz a cópia dos arquivos


    // verificando a lista de arquivos

     for(UploadedFile f:arquivos){
             System.out.println(">>>>>>>>>>>>>>>>>>>"+f.getFileName());

     }

}

Mas não tem jeito, só recebo um único arquivo. Já tentei alterar o nome do parametro para Filedata mas contino obtando o mesmo resultado. O que estou fazendo de errado?

tentou com name=“arquivos[0]”? qual versão do vraptor?

Puxa Lucas vc é rápido no gatilho rsrsrs. Sim, acabei de tentar dessa forma, mas obtive o mesmo resultado.

Vraptor versão 3.3.1.

vc tá com o jar do commons-fileupload e do commons-io no classpath?