Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

134
Vistas
El servlet de java jersey golpea el filtro pero luego se detiene

Tengo un servlet de jersey que no se conecta. Mientras hago un seguimiento con el depurador, puedo ver que se llama al filtro del servlet (que procesa el encabezado de la solicitud), pero después de eso pierdo el seguimiento y el servlet en sí (uploadFolder) nunca se ve afectado.

HTML

 <form id="uploadForm" method="post" enctype="multipart/form-data"> <p>Upload project folder: <input type="file" id="files" name="files" multiple webkitdirectory /></p>

JS

 $('#uploadForm').submit(function(e) { var fd = new FormData($('#uploadForm')[0]); var url = [my local machine]/GProject/uploadFolder; var cookieVal = RemoteJSvar.userId; var auth = ['Super_Complex_Auth', cookieVal]; var request = new XMLHttpRequest(); request.open("POST", url); request.setRequestHeader('Authorization',auth); request.onreadystatechange = function() { if(request.readyState == 4) { alert(request.responseText); } } request.send(fd); });

Java

 @POST @Path("uploadFolder") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.MULTIPART_FORM_DATA) public String uploadFolder(FormDataMultiPart multiPart) { boolean retVal = projects.uploadFolder(multiPart); //**This never gets hit** return "{\"retVal\" : " + String.valueOf(retVal) + "}"; }

Puedo rastrear a través del filtro y parece estar funcionando correctamente. No sale prematuramente ni aborta la solicitud. Entonces, ¿a dónde va después del filtro? El cuadro de alerta (request.responseText) muestra "Esta página dice:" sin nada en él.

También intenté enviar la solicitud usando jquery.ajax así:

 return jQuery.ajax({ type: 'POST', url: url, data: fd, enctype: 'multipart/form-data', processData: false, contentType: 'multipart/form-data', headers : { Authorization: auth }, error: function(xhr){ alert("An error occured: status=" +xhr.status + ", statusText=" +xhr.statusText); }, success: function(data) { alert("success!: "+data); } });

Curiosamente, la alerta de error apareció mientras el depurador aún estaba en el filtro. No esperaba eso. Salida: estado=0, textoestado="".

¿Alguna sugerencia?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La pista de la corrección fue status=0. Buscando en Google encontré que hay un problema con onSubmit. En consecuencia, lo cambié a un clic de botón en su lugar. Aquí está el nuevo

HTML

 <form id="uploadForm" method="post" enctype="multipart/form-data"> <label>Choose folder to upload: </label> <input type="file" id="files" name="files" multiple webkitdirectory class="k-button"/> <p style="margin:0;margin-top:3px"></p> <input type="button" id="uploadButton" value="Upload Folder" class="k-button" disabled/> </form>

Eso solucionó el error de estado, pero hubo otro error después de eso (lo olvidé). La solución fue también cambiar el Javascript.

JS

 $('#uploadButton').click(function() { var file = document.getElementById('files'); for (var i = 0, f; f = file.files[i]; ++i) { console.log(f.webkitRelativePath); } var fd = new FormData($('#uploadForm')[0]); var url = [my local machine]/GProject/uploadFolder; var cookieVal = RemoteJSvar.userId; var auth = ['Super_Complex_Auth', cookieVal]; var request = new XMLHttpRequest(); request.open("POST", url); request.setRequestHeader('Authorization',auth); request.onreadystatechange = function() {//Call a function when the state changes. if(request.readyState == 4) { console.log("responseText=" +request.responseText +", status="+request.status +", statusText="+request.statusText); } } request.send(fd); });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda