Upload com VRaptor + Ajax

1 resposta
R

Boa Tarde. Tenho que implementar uma rotina para leitura de um arquivo texto e importação de varios dados constante nesta arquivo texto.
Só que estou enfrentando problemas com o carregamento do arquivo via Vraptor + ajax.

quando tenho o codigo no meu .jsp desta forma, funciona sem problemas:
<form id="form" action="<c:url value="/importador/importararquivoposto"/>" method="POST" style="width:400px;" enctype="multipart/form-data">
		 		<input type="file" name="imagem" id="file2" style="width:350px" class="validate[required]" />
		 		</br></br>
		 		
			<button type="submit"><p>Importar Arquivo</p></button>
		 </form>
Mas quando tenho que fazer isto via Ajax jquery, o meu controller fica nulo no atributo UploadedFile. Segue o codigo:
<form id="form" action="" method="POST" style="width:400px;" enctype="multipart/form-data">
			<label for="codccusto">Centro de custo: </label>
				<select id="codccusto" name="centroDeCustos.codigo" class="validate[required]">
					<c:forEach items="${centroDeCustosList}" var="ccustos">
				    	<option value=${ccustos.codigo}>${ccustos.codigo} - ${ccustos.nome}</option>
					</c:forEach>
				</select>
				</br></br>
		 
		 	<label for="codccusto">Selecione o arquivo a ser importado: </label>
		 		<input type="file" name="imagem" id="file" style="width:350px" class="validate[required]" />
		 		</br></br>
		 		
			<button type="submit"><img src="<c:url value="/imagens/formulario_icone_gerar.png"/>" alt="submit" class="iconegerar" /><p>Importar Arquivo</p></button>
		 </form>
-chamada Ajax:
$.ajax({
					type: "POST",
					url: "<c:url value="/importador/importararquivoposto"/>",
					data: $("#form").serialize(),
					dataType: "json",
					error: function(e, jXHR, textStatus, errorThrown, data) {
						alert(e.responseText);
					},
					success: function(data) {
						var myObj = eval(data);
						alert(myObj.errors[0].message);
						alert(myObj.errors[0].category);
						if (myObj.errors == null) {
							$( "#dialog:ui-dialog" ).dialog( "destroy" );
						
							$( "#dialog-sucess" ).dialog({
								modal: true,
								autoOpen: true,
								buttons: {
									Ok: function() {
									$( this ).dialog( "close" );
									}
								}
							});
						}
					}
				});
Tenho a impressão que via ajax o form não assume o
enctype="multipart/form-data"

Seria isto mesmo? já tentei resolver, mas não consegui?

E aproveitando. seria a melhor forma de eu fazer a importação deste arquivo txt.

Obrigado pela ajuda, mais uma vez.

Rodrigo

1 Resposta

Lucas_Cavalcanti

com ajax puro não dá pra fazer uploads (pra nenhum sistema)…

procure por jquery uploadify, ele usa um flashzinho pra poder fazer isso.

Criado 2 de agosto de 2011
Ultima resposta 2 de ago. de 2011
Respostas 1
Participantes 2