Acceso denegado al recurso de archivo de servlet de Java
-
12-09-2019 - |
Pregunta
Estoy tratando de acceder a un archivo de recursos desde un servlet pero conseguir Error HTTP 500 - Acceso denegado
File file = new File("//warChildFolder//myFile.txt");
InputStream is = new FileInputStream(file); // <--error on this line
Estoy en google-app-engine.
Cualquier ayuda apreciada!
Solución
docs Google App Engine hablan de "listas blancas" de un archivo. Es que en el juego aquí?
también me pregunto acerca de esto:
File file = new File("//warChildFolder//myFile.txt");
¿La barra inicial hacen de esta una ruta absoluta?
Me gustaría probar de esta manera:
File file = new File("WEB-INF/warChildFolder/myFile.txt");
Hacer la ruta relativa a la raíz del WAR y ser explícito acerca de WEB-INF.
Otros consejos
No estoy seguro acerca de Google App Engine, pero en mi experiencia la única solución que funciona a través de contenedores y plataformas es utilizar ServletContext.getRealPath ().
new File(servletContext.getRealPath("/WEB-INF/warChildFolder/myFile.txt"));
La especificación dice: emplear la barra y una barra inicial. Esto le da la independencia de plataforma y no está confiando en el proceso de directorio actual.
¿Funciona si utiliza separadores de ruta individuales?
(actualizado para utilizar rutas relativas):
File file = new File("warChildFolder/myFile.txt");
Es necesario escapar el carácter "\" de cuerdas, a fin de utilizar "\", pero un solo "/" es todo lo que se necesita.
Actualización: Puede ser que el camino que se está procesando, no es lo mismo que usted espera, puede intentar registrar la ruta absoluta del archivo (con file.getAbsolutePath ()) para comprobar esto
.Otra cosa a comprobar es que el proceso ha leído permisos en la carpeta / archivo. Si no estás en Windows esto puede ser un problema.