Dynamicznie ustawia wartość wejściowego pliku [duplikat]

to pytanie ma już odpowiedzi tutaj : Jak ustawić wartość wejściową pliku podczas upuszczania pliku na stronę? [duplicate] (1 ODPOWIEDŹ) Jak ustawić właściwości File objects i length w obiekcie FileList, gdzie pliki są również odzwierciedlane w obiekcie FormData? (1 ODPOWIEDŹ) Zamknięty 4 lata temu .

Czy istnieje sposób, aby ustawić wartość wejścia pliku (<input type="file" />), czy to wszystko jest zablokowane dla bezpieczeństwa? Próbuję użyć openfiles google gears, aby zrobić prosty multi-uploader.

Uwaga:

Poniższe odpowiedzi odzwierciedlają stan starszych przeglądarek w 2009 roku. Teraz możesz ustawić wartość elementu wejściowego pliku dynamicznie / programowo za pomocą JavaScript w 2017 roku.

Zobacz odpowiedź na to pytanie, aby uzyskać szczegółowe informacje, a także demo:
jak programowo ustawić wartość wejściową pliku(np.: podczas przeciągania plików)?

Author: Samuel Liew, 2009-06-19

4 answers

Nie można dynamicznie zmieniać wartości pola file, w przeciwnym razie można ustawić je na "c:\yourfile" i bardzo łatwo kraść pliki.

Istnieje jednak wiele rozwiązań dla systemu multi-upload. Domyślam się, że chcesz mieć otwarte okno wyboru wielokrotnego.

Może zajrzyj na http://www.plupload.com/ - jest to bardzo elastyczne rozwiązanie do przesyłania wielu plików i obsługuje strefy upuszczania e. t. C.

 67
Author: Joel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-15 10:53:42

Pracuję nad aplikacją angular js i mam podobny problem. To, co zrobiłem, to wyświetlenie obrazu z db, a następnie utworzony przycisk, aby usunąć Lub zachować bieżący obraz. Jeśli użytkownik zdecydował się zachować bieżący obrazek, zmieniłem atrybut ng-submit na inną funkcję, która nie wymaga walidacji obrazu i zaktualizowałem rekord w db bez dotykania oryginalnej nazwy ścieżki obrazu. Funkcja Usuń obraz zmieniła również wartość atrybutu ng-submit z powrotem na funkcję, która przesyła formularz i zawiera walidację obrazu i przesyłanie. Również trochę javascript, aby przesunąć do widoku, aby przesłać nowy obraz.

 2
Author: Richard - IMPI MEDIA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-19 08:01:55

Skończyłem robiąc coś takiego dla AngularJS na wypadek gdyby ktoś natknął się na to pytanie:

const imageElem = angular.element('#awardImg');

if (imageElem[0].files[0])
    vm.award.imageElem = imageElem;
    vm.award.image = imageElem[0].files[0];

A następnie:

if (vm.award.imageElem)
    $('#awardImg').replaceWith(vm.award.imageElem);
    delete vm.award.imageElem;
 0
Author: jstudios,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 16:10:25

Miałem podobny problem, potem próbowałem napisać to z JavaScript i działa! : referenceToYourInputFile.value = "" ;

 -1
Author: CESAR SORO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-18 06:35:10