2013-10-03 18 views

Odpowiedz

2

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.

+3

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

+0

Cieszę się, że udało się to rozwiązać. – Drifter64

+1

dodaj swoją odpowiedź na to pytanie zamiast umieszczać je w komentarzu, aby był bardziej odpowiedni –

1
  1. Dodaj wydarzenie zmiany do znacznika wejściowego plik
  2. Przetwarza się nazwę pliku, ponieważ nadal ma ukośniki w tym momencie
  3. 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.

0

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.

0

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.

Powiązane problemy