2011-06-21 17 views
5

estoy trabajando en un proyecto GWT (aplicación web):GWT: fileUpload.getFileName() y fakepath

en algún momento, los usuarios pueden cargar un archivo a través de la aplicación a través de un FormPanel.

Como necesito el nombre del archivo, pensé que podría utilizar:

FileUpload upload = new FileUpload(); 
    // ... 
    String name = upload.getFileName(); 

Y name resulta ser algo como esto: C:\fakepath\whatever.txt.

¿Es esto multiplataforma? ¿Qué sucede en otro sistema operativo (estoy usando Windows)?

Respuesta

5

El nombre devuelto por un formulario de carga depende de la configuración de seguridad del navegador.

En Windows, C: \ fakepath se utiliza para ocultar dónde se encuentra realmente el archivo. El nombre de archivo, sin embargo, siempre se guarda.

Lo mismo puede ocurrir en otros campos, no sería C: \ fakepath (ya no está 100% seguro de lo que Linux podría devolver, por ejemplo).

Actualmente estoy trabajando en un sistema basado en GWT, usando el FileUpload; y el nombre de archivo no ha estado mal en ninguno de los campos de usuario utilizados (solo rutas diferentes (falsas)). Esto fue utilizado en Windows, Ubuntu y OS/x. Debería poder obtener el nombre de archivo correcto de forma segura separando el último "/" o "\" (tenga en cuenta que esos difieren según el sistema operativo), o use el método getFileName para eso :).

+3

El prefijo 'C: \ fakepath' es [" por especificación "en HTML5] (http://www.w3.org/TR/html5/number-state.html#file-upload-state). Espere que todos los navegadores, en todos los sistemas operativos, actualicen su comportamiento pronto si no lo hacen ya. La función de JavaScript 'extractFilename' de la especificación HTML5 es fácil de portar a Java. –