2012-01-23 14 views
6

Zamiast używania znacznika html , można otworzyć okno dialogowe choose a file to upload, klikając input type="button"? Kiedy plik zostanie wybrany z okna dialogowego choose a file to upload, ścieżka pliku zostanie wstawiona do zwykłego znacznika html input type="text"?Przycisk do pokazania wybierz plik do przesłania okno dialogowe

Wygląda na to, że Gmail robi coś podobnego, ale nie z przyciskami i tekstem, ma po prostu link add file lub coś w tym stylu. Po kliknięciu tego łącza wyświetlane jest okno dialogowe select file(s) to upload by mail.google.com. Po kliknięciu pliku nazwa pliku pojawia się na ekranie.

Jak oni to robią?

+1

Po kliknięciu prawym przyciskiem myszy na "Dołącz plik" w Gmailu zobaczysz, że zrobili to za pomocą Flasha. – Aknosis

Odpowiedz

3

Myślę, że większość przeglądarek ma to zablokowane ze względów bezpieczeństwa. Przyciski i pola tekstowe można modyfikować za pomocą JavaScript. Pola wprowadzania plików nie mogą, i nie bez powodu; wyobraź sobie, że javascript może otworzyć okno dialogowe, ustawić ścieżkę do wrażliwego pliku w twoim systemie, a następnie zasymulować kliknięcie przycisku, aby pobrać plik!


Nawiasem mówiąc, jeśli szukasz to styl, być może to będzie działać: http://www.quirksmode.org/dom/inputfile.html

+0

W Gmailu nie robi się czegoś podobnego, ale zamiast używać przycisków i typów wprowadzania tekstu, wydaje się, że używają one linku i ewentualnie znacznika zakresu lub div, aby pokazać wybrane pliki. Gdzie link pokazuje okno dialogowe przesyłania? – oshirowanen

+1

Wierzę, że GMail używa Flasha do ich funkcji "Załącz". Jeśli wyłączysz wtyczkę Flash, doda ona dobrze "modowe" pliki wejściowe. – Sam

0

Nie jest możliwe, aby zmienić się input[type=file] jak chcesz, jest to czysto rodzimy element formularza.

Poza tym nie będzie można uzyskać ścieżki do pliku ze względów bezpieczeństwa. Stare wersje IE pokazują ścieżkę, ale nie jest tak już w przypadku nowszych wersji i tak czy inaczej nie będziesz w stanie nic zrobić ze ścieżką po stronie serwera.

Istnieją jednak pewne metody do stylu:

1

Sprawdź to skrzypce: http://jsfiddle.net/A4BS7/1/

UWAGA:

a) nie może działać dobrze na starszych przeglądarkach (IE) przede wszystkim, że nie ognia zdarzenie zmiany na wejściu pliku.

b) Aby przesyłanie działało zgodnie z oczekiwaniami, w formularzu należy podać element <input type="file">. Element tekstowy może służyć do wyświetlania wybranego pliku w najlepszym przypadku.

+0

jak dodać przesłaną wartość pliku do innej wartości pliku? – JohnB

4
<input type="file" style="display:none;" id="inputfile"/> 
<a href="javascript:document.getElementById('inputfile').click(); ">try this</a> 

Wypróbuj tę. Myślę, że to jest przydatne .. :)

+0

Mimo że kod jest doceniany, powinien zawsze mieć towarzyszące wyjaśnienie. To nie musi długo potrwać, pojedyncza linia jest w porządku, ale jest potrzebna. Przybyłem tutaj z kolejki moderacji, ponieważ została ona automatycznie oznaczona flagą. Utrzymanie odpowiedzi na wysoką jakość pomoże temu zapobiec. – Veedrac

+0

proste i genialne! – Sllouyssgort

+0

Dzięki @ Soouyssgort –

Powiązane problemy