我在网页中使用文件字段。我必须显示文件字段的默认值。我使用了以下代码。
<input name="" type="file" value="test" />
但它不起作用。我怎么能这样做?
答案 0 :(得分:2)
不可能。锁定文件字段以防止将默认值设置为安全措施。如果你可以设置默认值,那么
是微不足道的<input type="file" name="hackme" value="/etc/passwd" />
并从客户端计算机中窃取任意文件。
答案 1 :(得分:1)
文件输入字段不能具有默认值。期。这是一个安全问题。不能这样做。遗憾。
在做了一些研究后,看来他们已经修改了HTML 5中文件输入的value属性:
输入。值[=值]
返回表单控件的当前值。
可以设置,更改值。
当控件是文件上传控件时,如果设置为空字符串以外的任何值,则抛出INVALID_STATE_ERR异常。
和
<强>文件名强>
获取时,必须返回字符串“C:\ fakepath \”,后跟所选文件列表中第一个文件的文件名(如果有),如果列表为空,则返回空字符串。 在设置时,如果新值为空字符串,则必须清空所选文件列表;否则,它必须抛出INVALID_STATE_ERR异常。
因此看起来W3C已经解决了“安全问题”的推理,并改变了HTML5中的行为。我认为您永远不会看到为文件输入控件预定义值的能力。
答案 2 :(得分:1)
虽然HTML 4.01规范说“用户代理可以使用value属性的值作为初始文件名”,但它只是可能,浏览器通常不会这样做。一些过去的浏览器实现了这样做,可能会警告用户风险,但那是几年前的事。
主要的安全问题是用户根本不会注意到该字段(可能是因为它在视觉上不明显或隐藏)。但这实际上是在文件上传的原始设计RFC 1867中预料到的。它说:“预计HTML解释代理会确认可能与<INPUT TYPE=file VALUE="yyyy">
建议的任何默认文件名。”似乎浏览器供应商刚刚发现考虑到设置默认文件名的相当有限的用途,它实现得太复杂了(因为偶数文件名语法依赖于平台)。
答案 3 :(得分:0)
w3.org说“用户代理可以使用value属性的值作为初始文件名”。但据我所知,大多数浏览器都不会将此作为安全措施。你可以在这里阅读:http://www.w3.org/TR/html4/interact/forms.html#h-17.4.1