Robię przesyłanie plików z Jersey, ale potrzebuję tylko nazwy pliku. Internet Explorer wysyła całą ścieżkę i na podstawie tego, co znajduje się w FormDataContentDisposition, Jersey analizuje ukośniki, więc nie mogę nawet tego przetworzyć. Dzięki.Jak uzyskać tylko nazwę pliku z przesyłaniem pliku Jersey
Odpowiedz
Brzmi jak trudny problem. Idealnym przypadkiem jest oczywiście chwycić ciąg zawierający ukośniki i po prostu użyć string.split!
W przeciwnym razie jedyną strategią, o której mogę pomyśleć, jest przetestowanie ciągu znaków, sprawdzającego, czy istnieją foldery o różnych długościach pierwszej części łańcucha itp. Może to powodować problemy, jeśli zamierzasz je znaleźć. folder "MyFolder (2)" i tam także "MyFolder". Nie wiem zbyt wiele o koszulce, ale polecam spróbować znaleźć inny sposób, aby pobrać ciąg, którego potrzebujesz.
- Dodaj wydarzenie zmiany do znacznika wejściowego plik
- Przetwarza się nazwę pliku, ponieważ nadal ma ukośniki w tym momencie
- Memory Stick że wartość do ukrytego wejścia
To ukryty wejściowego następnie zostanie przesłana wraz z resztą formularza.
@kombat znalazł to rozwiązanie i opublikował je jako komentarz. Na lepsze jest to teraz repostowane jako odpowiedź wiki społeczności.
Otrzymałem ten błąd, gdy próbowałem przeglądarki Eclipse. Kiedy wypróbowałem swój kod w Chrome, FormDataContentDisposition.getFileName() było w porządku.
To jest błąd w Jersey. W dyskusji na temat Nabble'a http://jersey.576304.n2.nabble.com/Jersey-truncating-the-slashes-from-the-uploaded-file-name-td5984041.html autor błędu ujawnia się i potwierdza "ponowne użycie kodu" do analizowania nagłówków HTTP w celu przeanalizowania Content-Disposition
. Jednak w cytowanym dokumencie RFC 2616 nie podano, że pola Content-Disposition
mają być ewidencjonowane zgodnie z regułami określonymi dla nagłówków HTTP. Wręcz przeciwnie, nie jest napisane, że:
Content-Dyspozycja nie jest częścią standardu HTTP, ale ponieważ jest powszechnie wdrożone, jesteśmy dokumentowania jej wykorzystania i zagrożenia dla implementors.
Ten błąd ma już brzydki obejście w klasie org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide
w aktualnej wersji Jersey, jednak to nie działa z IE 11 i krawędzi, ponieważ sprawdza User-Agent część, która uległa zmianie. Istnieje żądanie pobrania z poprawką: https://github.com/jersey/jersey/pull/233/files, ale przez prawie 2 lata nikt nie chciał go scalić.
Masz 3 rozwiązania:
1) aplly a „fix” na stronie klienta, który jest IMHO błędne podejście, ponieważ nie ma błędów po stronie klienta, błąd jest na Jersey!
2) Zmiana Jersey do innych ram, w których twórcy podjąć problemy z kompatybilnością bardziej poważnie, zamiast koncentrować się na maksymalizacji ponownego wykorzystania kodu itd
3) patch Jersey ręcznie. Pobierz źródła, zastosuj żądanie pobrania, skompiluj i zwolnij ze zmodyfikowanym numerem wersji.
- 1. Problem z przesyłaniem pliku
- 2. jak uzyskać tylko nazwę pliku bez ścieżki pliku?
- 3. Jak pobrać tylko nazwę pliku z okna dialogowego zapisywania pliku
- 4. Jak uzyskać nazwę otwartego pliku?
- 5. Jak uzyskać tymczasową nazwę pliku?
- 6. Jak uzyskać nazwę pliku DLL?
- 7. Jak mogę uzyskać nazwę pliku z żądania.FILES?
- 8. Jak uzyskać nazwę pliku z dyspozycji treści?
- 9. Jak uzyskać tylko nazwę katalogu z SaveFileDialog.FileName
- 10. PHAsset uzyskać oryginalną nazwę pliku
- 11. Jak uzyskać nazwę pliku wejściowego w MRjob
- 12. @MultipartForm Jak uzyskać oryginalną nazwę pliku?
- 13. Pobierz nazwę pliku z QFile?
- 14. Jak uzyskać nazwę pliku data.frame na liście?
- 15. Jak uzyskać pełną ścieżkę, podając nazwę pliku?
- 16. Jak mogę uzyskać nazwę pliku w Dart?
- 17. Uzyskaj nazwę pliku z pliku wejściowego Angular2
- 18. Jak uzyskać nazwę pliku z formularza przesyłania za pomocą jQuery?
- 19. usunąć pełną ścieżkę, zachować nazwę pliku tylko
- 20. jak uzyskać nazwę pliku wywołującego, nazwę metody w pytonie
- 21. Jak uzyskać typ MIME pliku przekazany w Jersey
- 22. Wypisywanie rejestracji w pliku Jersey?
- 23. Android - Jak uzyskać nazwę wybranego pliku z dokumentu
- 24. Jak uzyskać nazwę pliku z pełnej ścieżki za pomocą PHP?
- 25. Jak uzyskać nazwę pliku z Content-Disposition w nagłówkach
- 26. Jak uzyskać nazwę pliku pobranego z Angular $ http?
- 27. Jak zdobyć długą nazwę pliku z ARGV
- 28. Uzyskaj nazwę pliku z lokalizacji pliku w języku Java
- 29. Jak wskazać nazwę pliku do zapisania w przeglądarce z usługi REST w Jersey?
- 30. Cocos2d CCSprite Klasa uzyskać nazwę pliku obrazu
Dzięki.To, co w końcu robiłem, to dodanie zdarzenia zmiany do znacznika wejściowego pliku iw nim parsowanie nazwy pliku, ponieważ nadal ma w tym miejscu ukośniki, i wstawienie tej wartości do ukrytego wejścia. Ten ukryty wkład zostanie następnie przesłany wraz z resztą formularza. – kombat
Cieszę się, że udało się to rozwiązać. – Drifter64
dodaj swoją odpowiedź na to pytanie zamiast umieszczać je w komentarzu, aby był bardziej odpowiedni –