GWT:fileUpload.getFileName()&fakepath

l0r*_*c10 5 java gwt cross-platform

我正在开发一个GWT项目(Web应用程序):

在某些时候,用户可以通过FormPanel通过应用程序上传文件.

因为我需要文件名,我想我可以使用:

    FileUpload upload = new FileUpload();
    // ...
    String name = upload.getFileName();
Run Code Online (Sandbox Code Playgroud)

name原来是这样的:C:\fakepath\whatever.txt.

这是跨平台吗?其他操作系统会发生什么(我正在使用Windows)?

小智 5

上传表单返回的名称取决于浏览器的安全设置.

在Windows上,C:\ fakepath用于模糊文件实际所在的位置.但是,文件名始终保留.

在其他操作系统上也会发生同样的情况,它不会是C:\ fakepath(例如,不再100%确定linux可以返回什么).

我目前正在研究基于GWT的系统,使用FileUpload; 并且文件名在任何使用过的客户端上都没有错(只有不同​​的(假的)路径).这用于Windows,Ubuntu和OS/x.您应该能够通过在最后一个"/"或"\"上分开来安全地获取正确的文件名(请注意每个操作系统有所不同),或者使用该getFileName方法:).

  • `C:\ fakepath`前缀是[HTML5中的"spec by spec]"(http://www.w3.org/TR/html5/number-state.html#file-upload-state).预计所有操作系统上的所有浏览器都会很快更新其行为(如果尚未完成).HTML5规范中的`extractFilename` JavaScript函数很容易移植到Java. (3认同)