PHP文件上传的HTML表单:没有文本框

时间:2010-11-19 06:23:50

标签: php html forms xhtml

我的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。但我怀疑这是问题所在。

我正在编写的脚本旨在获取用户选择的文件,处理它,并将结果写入另一个尚不存在的文件中。我问这个问题是因为让用户更容易复制初始文件路径/名称,将其粘贴到其他字段,然后只更改其中的一部分会很有用。

(另外:为什么“浏览...”和“选择文件”之间存在差异?我尝试手动将“用户文件”字段的值设置为“浏览...”但没有发生任何事情。这不太重要但是尽管我很好奇。)

2 个答案:

答案 0 :(得分:2)

它可能会显示不同的浏览器和/或版本。

听起来你正在Safari下看它,例如,这本书有IE的截图。

有几种方法可以完全控制文件上传和<input type="file" />元素。您可以使用Flash,也可以将input设置为opacity: 0,然后在其下方放置您想要的内容。

答案 1 :(得分:0)

前段时间,浏览器引擎几乎完全控制了输入类型=“文件” - 字段,因为它现在被认为是一个安全问题。例如,前几天您可以轻松地使用某些路径和文件名(例如/ etc / passwd)预填充文件输入并隐藏字段,因此发送表单时您不会注意到您也在发送文件。 .. 这就是为什么例如你不能预设这样一个字段的文件名,这也是为什么浏览器现在都用这些特殊的输入字段做自己的事情。 正如亚历克斯上面所说,你可以解决这个问题,但这会有些麻烦,因为它意味着“伪造”文件输入字段。