2009-11-08 13 views
219

Uwaga:Jak ustawić wartość dla danych wejściowych pliku w HTML?

Odpowiedzi & komentarze poniżej odzwierciedlają stan starszych przeglądarek w roku 2009. Teraz rzeczywiście można ustawić wartość elementu wejściowego pliku dynamicznie/programowo przy użyciu JavaScript i obiekt DataTransfer lub w FileList 2017

Patrz odpowiedź na to pytanie o szczegóły, a także demo:
How to set file input value programatically (i.e.: when drag-dropping files)?

jak mogę ustawić wartość tego?

<input type="file" /> 
+3

Zrobiłem pełne odniesienie i aż do daty (grudzień 2013) Odpowiedź na ten temat tutaj: [Pamiętaj i repopulate plik wejściowy] (http: // stackoverflow.com/a/20537822/588079) – GitaarLAB

+2

Możliwy duplikat [Sposób ustawiania wartości wejściowej pliku programowo (np. gdy pliki są upuszczane)?] (https://stackoverflow.com/questions/47515232/how-to-set- file-input-value-programatically-ie-when-drag-dropping-files) –

Odpowiedz

381

Nie można z przyczyn bezpieczeństwa.

Imagine:

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

Nie chcesz odwiedzanych witryn, aby móc to zrobić, prawda? =)

+0

Czy możesz to wyczyścić? To budzi mnie, że nazwa pliku jest pamiętana za każdym razem, gdy wrócę. Pelase patrz http://stackoverflow.com/questions/41807471/can-i-reset-the-seletced-file-name-of-an-html-5-file-selector – Mawg

+1

Rozumiem problem bezpieczeństwa, ale nie powinienem przeglądarka potrafi odróżnić niebezpieczną lokalną ścieżkę do pliku i coś bardziej nieszkodliwego jak dataUrl? Może to jest fajne marzenie. – cowlinator

+3

Co powiesz na funkcję przeciągnij i upuść, nie ma możliwości ustawienia tego pliku na pole wejściowe? – Vedmant

26

Nie możesz. I to jest środek bezpieczeństwa. Wyobraź sobie, że ktoś pisze JS, który ustawia wartość wejściową pliku na jakiś poufny plik danych?

100

Nie możesz.

Jedynym sposobem, aby ustawić wartość pliku wejściowego, jest użytkownik, aby wybrać plik.

Jest to wykonywane ze względów bezpieczeństwa. W przeciwnym razie będzie można utworzyć skrypt JavaScript, który automatycznie prześle określony plik z komputera klienta.

41

Nie jest to odpowiedź na pytanie (które inni odpowiedział), ale jeśli chcesz mieć niektóre funkcje edycji w polu dodany plik, co prawdopodobnie chcesz zrobić jest:

  • pokazują aktualną wartość tej dziedzinie przez tylko drukowanie pliku lub URL, klikalny link, aby go pobrać, lub jeśli jest to obraz: po prostu pokazać, ewentualnie jako miniatury
  • tag <input> aby przesłać nowy plik
  • pole wyboru, że kiedy zaznaczone, usuwa aktualnie przesłany plik. pamiętaj, że nie ma możliwości przesłania "pustego" pliku, więc potrzebujesz czegoś takiego, aby wyczyścić wartość pola:
-3

Właściwie możemy to zrobić. możemy ustawić domyślną wartość pliku przy użyciu kontrolki przeglądarki w języku C# przy użyciu biblioteki FormToMultipartPostData. Musimy pobrać tę bibliotekę w naszym projekcie. Przeglądarka internetowa umożliwia użytkownikowi nawigację po stronach internetowych w formularzu. Po załadowaniu strony internetowej zostanie wykonany skrypt wewnątrz obiektu WebBrowser1_DocumentCompleted. Więc

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

Patrz poniższy link do pobierania i pełnego odniesienia.

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

+0

Link do rozwiązania jest mile widziany, ale proszę, upewnij się, że odpowiedź brzmi użyteczne bez niego: [dodaj kontekst związany z linkiem] (// meta.stackexchange.com/a/8259/165483), aby inni użytkownicy mieli pojęcie, co to jest i dlaczego tam jest, a następnie zacytuj najbardziej odpowiednią część stronę, do której prowadzi link w przypadku, gdy strona docelowa jest niedostępna. [Odpowiedzi, które są niewiele więcej niż linkem, mogą zostać usunięte.] (// stackoverflow.com/help/deleted-answers) –

+0

Zobacz także [Jak ustawić programową wartość wejściową pliku (np .: kiedy pliki są upuszczane)? (https://stackoverflow.com/q/47515232/584192) –

Powiązane problemy