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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top