我的PHP书提供了一个用于上传文件的模板HTML表单:
<form action="upload.php" method="post" enctype="multipart/form-data"/>
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="10000000"/>
<label for="userfile">Upload a file:</label>
<input type="file" name="userfile" id="userfile"/>
<input type="submit" value="Send File"/>
</div>
</form>
本书将其显示为“上传文件:”[文本框] [浏览...] [发送文件]
我逐字复制了,我得到的结果是“上传文件:”[选择文件]“没有选择文件”[发送文件]
我想知道为什么存在这种差异。有办法解决吗?我正在使用XHTML Transitional。书中没有给出doctype。但我怀疑这是问题所在。
我正在编写的脚本旨在获取用户选择的文件,处理它,并将结果写入另一个尚不存在的文件中。我问这个问题是因为让用户更容易复制初始文件路径/名称,将其粘贴到其他字段,然后只更改其中的一部分会很有用。
(另外:为什么“浏览...”和“选择文件”之间存在差异?我尝试手动将“用户文件”字段的值设置为“浏览...”但没有发生任何事情。这不太重要但是尽管我很好奇。)
答案 0 :(得分:2)
它可能会显示不同的浏览器和/或版本。
听起来你正在Safari下看它,例如,这本书有IE的截图。有几种方法可以完全控制文件上传和<input type="file" />
元素。您可以使用Flash,也可以将input
设置为opacity: 0
,然后在其下方放置您想要的内容。
答案 1 :(得分:0)
前段时间,浏览器引擎几乎完全控制了输入类型=“文件” - 字段,因为它现在被认为是一个安全问题。例如,前几天您可以轻松地使用某些路径和文件名(例如/ etc / passwd)预填充文件输入并隐藏字段,因此发送表单时您不会注意到您也在发送文件。 .. 这就是为什么例如你不能预设这样一个字段的文件名,这也是为什么浏览器现在都用这些特殊的输入字段做自己的事情。 正如亚历克斯上面所说,你可以解决这个问题,但这会有些麻烦,因为它意味着“伪造”文件输入字段。