Podczas używania przeglądarki Firefox v73 w systemie Windows 7 wystąpił następujący problem:
W moim kodzie używam selektora wielu plików w HTML, aby przesłać równolegle do 100 plików:
<input type="file" id="files" name="files" multiple>
Pliki zostaną wysłane do interfejsu API REST, który następnie je przetworzy. Kiedy wybieram pojedynczy plik (w eksploratorze plików), który jest aktualnie używany, pojawia się komunikat o błędzie (prawdopodobnie przez okno), który mówi mi, że pliku nie można wybrać, ponieważ jest w użyciu. Jeśli próbuję wybrać wiele plików, które zawierają jeden lub więcej używanych plików, nie pojawia się żaden błąd, ale przesyłanie wydaje się być zatrzymane po osiągnięciu używanego pliku i oczekiwaniu na zwolnienie pliku. To prowadzi do żądania oczekiwania na limit czasu (w moim przypadku jest to 1 minuta).
Czy jest jakaś opcja, aby złapać problem (używany plik) przed próbą przesłania plików?
PS: Próbowałem tego samego w Chrome i zwraca błąd przed wysłaniem żądania do interfejsu API REST.
źródło
Odpowiedzi:
To brzmi jak problem z systemem operacyjnym.
Coś blokuje dostęp do twojego pliku i to wymaga naprawy po twojej stronie.
Wątpię, czy będzie to powszechny problem i trudno jest zbudować rozwiązanie, nie mogąc doświadczyć tego samego problemu, ale jedną rzeczą, którą możesz spróbować, to przeczytać swoje pliki przed wysłaniem. Można to zrobić dość wygodnie za pomocą
Blob.prototype.arrayBuffer
metody, którą można wypełnić wieloskładnikowo.Aby uniknąć dużej liczby operacji we / wy, możesz nawet spróbować odczytać tylko niewielką jej część dzięki
Blob.prototype.slice()
metodzie.źródło
Aby wybrać wiele plików, dlaczego nie używasz https://github.com/blueimp/jQuery-File-Upload
źródło