Pregunta

Estoy descargando varios archivos a través de I/O Streaming en mi aplicación Java. Recibir y guardar esos archivos funciona bien siempre que tenga una ruta de URL completa que incluya el nombre del archivo, pero ¿cómo puedo averiguar el nombre del archivo de índice (como se define, por ejemplo, Apache's? DirectoryIndex) de un dominio? El encabezado HTTP no proporciona esta información y tampoco el URLConnection método.

¡Muchas gracias!

Que estes bien
S.

¿Fue útil?

Solución

Hasta donde yo sé, no hay forma de recuperar esta información. La especificación HTTP no lo proporciona, y creo que esto no es algo malo. Sus clientes solicitan la URL "/", depende del servidor web cómo manejar eso, no existe la obligación de devolver un nombre de archivo también.

También vale la pena señalar (estoy seguro de que lo conscientes, pero por si acaso) eso solo porque se ve una URL como /somedir/somefile.html, no significa que ese sea el actual archivo que se sirve. Se podría servir a través de un proxy a otro host, mod_rewrite, etc., en otras palabras, el nombre es arbitrario y no necesariamente tiene ninguna relación con el nombre físico en el disco.

En resumen, creo que su mejor opción sería elegir un nombre de archivo predeterminado, por ejemplo, index.html para esos casos y quédese.

Otros consejos

La única salida es:

  1. Inspeccione el encabezado de disco de contenido y úselo para generar el nombre de archivo. Si el servidor está sirviendo un archivo, configuraría este encabezado. P.ej http: // servidor: puerto/descargaServlet URL podría establecer este encabezado para indicar el nombre como "Declaration.pdf".
  2. Si falta este encabezado, use la heurística para generar el nombre de archivo. Esto es lo que hacen los navegadores para generar nombres de archivo como doc [10] .pdf doc [12] .pdf etc.
  3. Use el encabezado de tipo de contenido (si está disponible) para adivinar la extensión del archivo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top