Как установить значение для ввода файла в HTML?

Примечание:

ответы и комментарии ниже отражают состояние устаревших браузеров в 2009 году. Теперь вы можете установить значение элемента ввода файла динамически / программно, используя JavaScript и объект dataTransfer или FileList в 2017 году.

см. ответ в этом вопросе для деталей, а также демо:
как установить входное значение файла программно (т. е.: при перетаскивании файлы)?

Как я могу установить значение этого?

<input type="file" />

7 ответов


вы не можете из-за соображений безопасности.

представьте себе:

<form name="foo" method="post" enctype="multipart/form-data">
    <input type="file" value="c:/passwords.txt">
</form>
<script>document.foo.submit();</script>

вы не хотите, чтобы веб-сайты, которые вы посещаете, могли это сделать, не так ли? =)


ты не можешь.

единственный способ установить значение ввода файла-это выбрать файл пользователем.

Это делается по соображениям безопасности. В противном случае вы сможете создать Javascript, который автоматически загружает определенный файл с клиентского компьютера.


Не ответ на ваш вопрос (на который ответили другие), но если вы хотите иметь некоторые функции редактирования загруженного поля файла, то, что вы, вероятно, хотите сделать:

  • показать текущее значение этого поля, просто распечатав имя файла или URL-адрес, щелкните ссылку, чтобы загрузить его, или если это изображение: просто покажите его, возможно, в виде миниатюры
  • на <input> тег для загрузки нового файла
  • флажок, который, если установлен, удаляет текущий загружаемый файл. обратите внимание, что нет способа загрузить "пустой" файл, поэтому вам нужно что-то вроде этого, чтобы очистить значение поля

ты не можешь. И это мера безопасности. Представьте, что кто-то пишет JS, который устанавливает входное значение файла в какой-то конфиденциальный файл данных?


Как все остальные здесь заявили:вы не можете загрузить файл автоматически с помощью JavaScript.


определить в html:

<input type="hidden" name="image" id="image"/>

в JS:

ajax.jsonRpc("/consulta/dni", 'call', {'document_number': document_number})
    .then(function (data) {
        if (data.error){
            ...;
        }
        else {
            $('#image').val(data.image);
        }
    })

после:

<input type="hidden" name="image" id="image" value="/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."/>
<button type="submit">Submit</button>

на самом деле мы можем сделать это. мы можем установить значение файла по умолчанию с помощью элемента управления webbrowser в c# с помощью библиотеки FormToMultipartPostData.Мы должны загрузить и включить эту библиотеку в наш проект. Браузер позволяет пользователю перемещаться по веб-страницам внутри формы. После загрузки веб-страницы будет выполнен скрипт внутри webBrowser1_DocumentCompleted. Итак,

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
       FormToMultipartPostData postData = 
            new FormToMultipartPostData(webBrowser1, form);
        postData.SetFile("fileField", @"C:\windows\win.ini");
        postData.Submit();
    }

см. ссылку ниже для загрузки и завершения ссылка.

https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com