Upload usando servlet y cos.jar

Estoy haciendo un servlet que utiliza el paquete cos.jar de O'really para realizar uploads de ficheros desde una página jsp.
Instalo perfectamente el servlet, pero a la hora de ejecutar me falla la instancia de la clase MultipartRequest.
Siempre me devuelve java. Io.IOException: Posted content type isn't multipart/form-data
El formulario que llama al servlet es de la forma enctype='multipart/form-data'y el método que uso es POST.
No entiendo porqué no me instancia la clase,
MultipartRequest multi =
new MultipartRequest(request, dirName, 10*1024*1024,"ISO-8859-1", new DefaultFileRenamePolicy());
DirName tiene valor correcto, por lo que si todo lo demás es correcto no debiera dar ningún tipo de error.

1 respuesta

Respuesta
1
Con request. GetContentType() puedes saber cual es el tipo que estas recibiendo, ¿me puedes poner el código de la página y como es el constructor de MultipartRequest? Y por ultimo comprebar que no se te ha colado algún carácter raro en el enctype yo lo borraría y lo volvería a escribir por si acaso que algunas veces el html es muy puñetero.
El form es de la siguiente forma:
<FORM ACTION="/servlet/requestupload" name="gestionafichero" enctype="multipart/form-data" METHOD="post" >
<input type="file" name="fichero" value="c:\tarea.xls" style="visibility:hidden">
</FORM>
El método doPost del servlet es:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("multipart/form-data");
System.out.println("Demo Request Upload Servlet");
try {
MultipartRequest multi =
new MultipartRequest(request, dirName, 10*1024*1024,"ISO-8859-1", new DefaultFileRenamePolicy()); // 10MB
.....
El constructor está sobrecargado, pero en este caso utilizo:
MultipartRequest(javax.servlet.http.HttpServletRequest request, java.lang.String saveDirectory, int maxPostSize, java.lang.String encoding, FileRenamePolicy policy)
Esta información la he recogido de http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html
Saludos.
Es que no puedes poner el nombre de fichero a saco en el input file sino que tienes que ponerlo para que te saldrá una caja con la que seleccionarlo.
Si lo pones como texto un valor a saco de la página supongo que el servlet entenderá que es texto normal no hará el upload.
Yo creo que por eso no lo reconoce como multipart ya que al usar la selección coge por un lado el nombre y por otro el fichero para componer el multipart.
En todo caso, si eso se puede hacer (q me extrañaría mucho), dudo mucho que se le pueda poner un visibility hidden puesto que eso seria un agujero de seguridad enorme, ya que te permitiría leer cualquier fichero del disco duro de la persona q navega por tu web.
Parece que funciona seleccionando, pero cuando inicia el upload me sale una ventana de descarga!?.
¿Cómo podría evitarlo?
Al menos que yo sepa, porque realmente estas descargando algo en el servidor, a no ser que te hagas un ocx o algo así.
Pero la ventana de descarga es para descargar en la maquina cliente un fichero de ok de la forma requestupload4418a518 o similares.
No entiendo porque me sale en local, si lo que realizo es un upload.
Al final logré que no saliera la ventanita, muchas gracias por tu ayuda.Me he llevado dos días seguidos buscando una solución y gracias a ti se ha solucionado todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas