HTML-форма для загрузки PHP-файла: нет текстового поля - PullRequest
0 голосов
/ 19 ноября 2010

Моя книга 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. В книге не указан тип документа. Но я сомневаюсь, что это проблема.

Сценарий, который я пишу, нацелен на то, чтобы взять выбранный пользователем файл, обработать его и записать результат в другой файл, который еще не существует. Я задаю этот вопрос, потому что было бы полезно, чтобы пользователю было проще скопировать начальный путь / имя файла, вставить его в другое поле и просто изменить его часть.

(Также: почему разница между «Обзор ...» и «Выбрать файл»? Я попытался вручную установить значение поля «Пользовательский файл» на «Обзор ...», но ничего не произошло. Тем не менее, мне любопытно.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

Возможно, он показывает другой браузер и / или версию.

Звучит так, будто вы смотрите на него в Safari, и в книге, например, есть скриншоты IE.

Существует несколько способов получить полный контроль над загрузкой файлов и элементом <input type="file" />. Вы можете использовать Flash, или вы можете установить input на opacity: 0 и затем поместить то, что вы хотите под ним.

0 голосов
/ 19 ноября 2010

Некоторое время назад браузерные движки получили почти полный контроль над полями input type = "file", поскольку в настоящее время это рассматривается как проблема безопасности. Например, за несколько дней до этого вы могли легко заполнить введенный файл некоторыми путем и именем файла (например, что-то вроде / etc / passwd) и скрыть поле, поэтому при отправке формы вы не заметите, что вы также отправляете файл. .. Вот почему, например, вы не можете предварительно задать имя файла такого поля, и поэтому браузеры теперь все делают по-своему с этими специальными полями ввода. Как сказал Алекс выше, вы можете обойти это, но это будет немного хлопотно, потому что это будет означать «подделать» поле ввода файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...