我使用p:fileUpload上传图片。我真的不需要将图像上传到服务器,但我只需要获取保存在服务器中的文件(图像)的完整本地URL(ie.c:/.../../ ..)本地磁盘,我试过,但我刚拿到扩展名的文件名。这是一个在本地使用的Web应用程序,因此服务器和客户端都在同一台机器上。 URL需要保存在数据库中。
答案 0 :(得分:4)
出于安全原因,浏览器不会发送完整的客户端文件路径。他们只发送文件内容和文件名。古代浏览器和MSIE是唯一一个暴露安全漏洞的浏览器,它仍然发送完整的客户端文件路径以及文件上载。您不应该依赖应用程序中的此安全错误。
你应该抓住InputStream
byte[]
的{{1}}风格的文件内容,然后通过FileOutputStream
自己将立即写入更永久的存储位置或者可能通过DB中的@Lob
到BLOB
列。如有必要,您可以使用File#createTempFile()
自动生成唯一的文件名。
请注意,本地磁盘文件系统路径不能表示客户端可用于获取文件的有效HTTP URL。当初始网页本身由file://
而不是http://
打开时,Firefox等浏览器拒绝投放file://
个网址。因此,您确实需要通过Web服务器提供这些上传的文件。建议只在DB中存储文件名(不是完整路径!)。然后,您可以配置Web服务器以将某个文件夹发布到Web,或者创建一个简单的servlet以将某个文件夹提供给Web。