2009-12-14 4 views

ответ

55

да, вы можете использовать форму.submit() функция. Добавить OnChange слушателя на входе файл и связать его с функцией form.submit, например, так:

<form action="upload.php" method="post"> 
<input type="file" onchange="this.form.submit()" name="myFile"/> 
</form> 
1

Я не верю, что вы можете это сделать. Браузеры очень, очень строгие в отношении того, что вы можете сделать, чтобы загрузить поля для загрузки из-за возможности злоупотребления. Если пользователь случайно выбирает частный файл, они не хотят, чтобы он сразу же начал загрузку этого файла на случайный сервер.

+0

неправда, я просто проверил код в своем ответе, и он работает (по крайней мере, в Firefox). – Marius

+1

Нечетный, аналогичный код здесь не работает. Проверка еще ... – ceejayoz

+4

Очень верно ... это решение НЕ будет работать во всех браузерах –

6

Да, вы можете добавить следующее в onchange случае входного файла:

<input type='file' .... onchange='this.form.submit();'> 

это представляет форму сразу после того, как пользователь выбрал файл. Однако пользователь не может исправить ошибочный выбор перед отправкой - обязательно проверьте, действительно ли это разумно.

-1

Я не уверен, какие ограничения существуют при использовании этого метода в форме HTML.

Вы можете, однако, сделать это с помощью Flash. Gmail делает это - когда я нажимаю «Прикрепить файл», я получаю приглашение с диалоговым окном просмотра файлов, и когда я ОК, это диалог, загрузка начинается сразу, а также дает мне индикатор выполнения.

Googling для «Flash uploader» предоставит вам много возможностей, но у меня нет опыта с кем-либо из них.

2

Это решение работает для меня.

<form enctype="multipart/form-data" method="POST" action="/upload"> 
    <input id="myfilefield" type="file" name="file"> 
    <input type="submit"> 
</form> 

 

document.getElementById('myfilefield').onchange = function() { 
    this.form.submit(); 
}; 

Кстати, вам не нужно использовать вспышку. Gmail делает это с помощью XHR Level 2.

Смежные вопросы