2010-11-04 82 views
0

我正在使用基于Web的应用程序,其中包含servlet和JSP。我的要求是获取在我的应用程序中上传的文件的路径。FilePart的getFilePath API无法按预期方式工作

利用,通过利用代码来获取文件名的遗留代码 -

// FilePart类com.oreilly.servlet.multipart package.//的

FilePart filePart = (FilePart) part; 
    screenosInputFileName = filePart.getFileName(); 

的getFileName的以“a.txt”之类的字符串正确返回文件的名称。因为我也想要路径,所以我正在使用getFilePath,如 - String path = filePart.getFilePath();

但是,我发现getFilePath只是返回文件名而不是文件路径。也就是说,getFileName和getFilePath返回相同的值“a.txt”。我期待的getFilePath就像c:\ myfiles。 另外,我正在Ubuntu环境(linux风格)中运行我的应用程序。

任何想法为什么getFilePath只会重新调用文件名而不是文件路径?以及如何克服这个问题。任何指针高度赞赏。

+0

你想从客户端文件路径?那么你不能这样做 – 2010-11-04 09:22:40

回答

0

注:我不熟悉com.oreilly.servlet.multipart.FilePart

如果FilePart表示客户端上的文件,那么它是不可能得到它的路径(没有理由让服务器知道a.txt是否是从C:\Users\bob\/home/bob/Documents/上传,让信息不包括在内)。

如果FilePart表示服务器上的文件(如果你的服务器保存上传的文件到一个临时目录,以便您可以访问他们的实际文件),那么你应该能够使用它来获取实际的路径该文件:

String path = new File(filePart.getFilePath()).getAbsolutePath(); 

我希望这是有帮助的!

+0

'FilePath'是一个服务器组件......包名中的'servlet'在这里是一个很大的提示。 – Powerlord 2010-11-04 13:37:33

+0

@Bemrose我明白这一点。但是,此服务器组件是否代表客户端或服务器上的对象? – Jonathan 2010-11-04 13:47:02

0

它曾经是Internet Explorer将在客户端的计算机上包含文件的完整路径。我不知道它是否已经这样做了,但我不这么认为,因为这是一个隐私问题。服务器没有业务知道完整路径。

0

getFilePath只在客户端使用Internet Explorer时才起作用,因为它是唯一一个将整个文件路径返回给服务器的浏览器。有机会,它只能在IE6上运行,因为我相信当IE7推出时,MS终于意识到这不是一个好的安全实践。

相关问题