仅限GXT 3.x。
有人可以分析并解释FileUploadField中三个私有字段之间的连接吗?
具体地,
如果你能回答上述问题,你应该能够回答这个问题......(但如果你不提供上述两个问题的答案,请不要回答这个问题)。以下陈述是真的,有些真实或偶然吗?
修改
好的,不要紧,第2项:将fileinput值传送到onChange方法的文本输入。
答案 0 :(得分:2)
没有。有一个<input type=file>
无形地涂在“真实”按钮的顶部。单击此按钮时,会出现一个对话框 - 单击“点击”<input type=file>
而不是按钮,但onBrowserEvent
告诉按钮的行为方式就像点击它一样。据我所知,这是获取浏览器提供的文件系统(即“选择文件”)的唯一途径(至少支持没有新文件api,flash或其他插件的浏览器) )。
<input type=file>
公开对页面上的javascript访问名称(可能是也可能不完整甚至是真实的)。正如您所注意到的,这可以从输入本身的DOM更改事件中获得。只有文件名可用(同样,没有文件api),它可能有一个假路径(即IE)或没有路径(其他人)。
这不是GXT与此有关的安全问题 - 相反,该字段dom的rube-goldberg布局是为了处理浏览器的安全限制。在private
上使用<input>
只是明确表示您不应该直接访问它,并且 nothing 有意义以防止您阅读它。如果你将其子类化,请继续使用getFileInput()
,否则,使用JSNI和所谓的违反者模式来获取对文件字段或该方法的引用。
是的 - 这不是关于安全性,而是关于编写可维护代码。另请参阅https://stackoverflow.com/a/2954949/860630。