2016-07-27 34 views
3

至于其他CFFILE上传的问题指出,查找CFFILE的源文件路径上传

GetPageContext().formScope().getUploadResource("myFormField").getName() 

是伟大的,实际上做的CFFILE(为Railo和Lucee之前获取服务器上的文件名 - 有一个不同方法为ColdFusion),但我注意到一个有趣的皱纹:如果浏览器是IE浏览器,那么这将返回包括文件名的完整源代码路径。另一方面,Firefox和Chrome只返回文件名。

对于我的应用程序,我需要完整的路径,但在浏览器为FireFox或Chrome时无法找到。如果有人有任何想法,我将非常感激!

+1

我不熟悉那种方法。是否应该返回* client *文件属性或* server *属性?这听起来像*客户端*信息 - 这不是您从服务器端控制的东西。 AFAIK [无论浏览器供应商选择发送什么](http://stackoverflow.com/questions/2200100/input-type-file-for-ie-gives-full-path-need-file-name-only)。 – Leigh

+0

感谢您的参考 - 具有讽刺意味的是,这张海报想要的与我正在寻找的完全相反! – Mike

+0

你应该包括一个链接给你提问以备将来参考。 –

回答

2

(从注释扩展)

我不熟悉getUploadResource()功能。但是,查看this related thread,听起来好像它返回客户端提交的的文件信息。虽然有建议的指导方针,最终the value received on the server is whatever the browser chooses to send。它不是可以被服务器端代码改变或控制的东西。因此,如果Firefox和Chrome返回与IE不同的东西,那么您运气不佳。 (除此之外,我个人总是发现Internet Explorer在这方面有点奇怪,除非使用签名控件,否则传统浏览器是restricted from certain file access operations for security reasons。因此,您可能预期这些限制会阻止浏览器提交信息实际上,大多数浏览器都做而不是提交上传的路径信息,只有一个文件名。显然,IE浏览器选择做的事情..不同的..不管是什么原因)

对于我的应用,我需要完整路径

话虽如此,为什么你需要从客户端机器

+0

因此,看起来我注定要使用IE浏览器(而且我正在将您的答案标记为正确)。但只是为了解释为什么我需要这个:我的HD上有一个工作副本,它模仿我的开发和生产服务器上的目录结构。我编写了一个脚本,可以将我的工作副本中的文件部署到dev或prod服务器,并保留上传内容的审计跟踪。我需要完整的源代码路径,以便服务器端代码可以计算出文件的位置。 – Mike

+0

是的,IE是我用来提供该信息的唯一浏览器。顺便说一句,我曾与一个传统系统,有一个土布工具类似的。但是,它不是依靠客户端路径,而是使用相对路径压缩一个或多个源文件。然后在提取和更新源时使用归档路径。不是最好的方法,但是......支持通过审计来部署多个源文件。 – Leigh

+0

这是一个狡猾的想法! – Mike