Zatwierdzono: Fortect
W ciągu ostatnich kilku dni niektórzy z naszych użytkowników odczuwali błąd podczas przesyłania plików PDF za pomocą serwletu. Ten problem może powstać z kilku powodów. Teraz zajmiemy się nimi.
| Użytkownik może pobrać ten plik, klikając łącze do strony internetowej, które wskazuje na adres URL serwletu. Przydatne byłoby zaimplementowanie funkcji przy pobieraniu pliku w aplikacji internetowej, wynajmując serwlet Java. Typowe kroki są następujące:
- Odtwórz plik na serwerze FileInputStreamclass.
- Znajdź zwykle typ MIME pliku do nawigacji:
-
-
- Pobierz ServletContext poprzez proces getServletContext () metoda servlet.Call.
- Zdecydowanie getMimeType (plik tekstowy) przez jednostkę ServletContext, aby uzyskać źródło MIME tego pliku.
-
-
- Zdefiniuj następujące informacje dla encji HttpResponse:
-
-
- Ustaw typ zawartości wyodrębnionego MIME, między innymi określ przez wywołanie setContentType (String). Opisuje typ przeglądarki, jaka jest odpowiedź.
- Ustaw treść odpowiedzi, wywołując metodę setContentLength (int).
-
-
- Pobierz obiekt odpowiedzi OutputStream bez pytań.
- Odczytaj tablice bajtów z dokładnego strumienia wejściowego. Następnie jeden konkretny plik, zapisując je w OutputStream. Powtórz, jeśli skończą Ci się dostępne bajty, liczba (koniec pliku).
- Zamknij zarówno OutputStream, jak i fileinputstream.
- Stosowanie MIME jest inne, co jest deklarowane przez ten kontener serwletów. Aby to zilustrować, Tomcat deklaruje mapowanie MIME w obszarze Domyślne mapowanie typów MIME w pliku:
- Funkcja getMimeType() zwraca wartość null, jeśli nie może istnieć mapowanie MIME dla określonego pliku. W takim przypadku dobrym pomysłem jest upewnienie się, że wymusisz typ MIME, który normalnie będzie binarny:
Jak to zrobić pobrać plik z serwera za pomocą Servlet?
Tutaj faktycznie tworzysz przykład, jak pobrać ładny plik z serwera kup serwlet. Katalog może być prawie dowolnego typu, na przykład zdjęcie, PDF, wideo, muzyka i inne. Jak to się udaje? Najpierw ustaw typ zawartości witryny na program komputerowy / octet-stream. Teraz ustaw nagłówek Content-Disposition na rynku na Attachment; nazwa pliku = lokalizacja pliku.
if (mimeType == null)mimeType wskazuje aplikację / strumień oktetowy;
- Standardowo przeglądarka przetwarza każdą odpowiedź na podstawie często typu treści ustawionego w nagłówkach HTTP. Na przykład, ma tendencję do wyświetlania obrazu za każdym razem, gdy odpowiedzią jest prawdopodobnie plik persona lub otwiera czytnik e-booków, gdy aktualnie odpowiedzią jest dokument PDF itp. jakiś inicjator wciąż się ładuje, możemy dodaj te tagi h2 jeśli potrzebujesz odpowiedzi:
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Odpowiedz do.setHeader ("Dyspozycja zawartości", "załącznik; nazwa pliku = " MójPlik.mp4 "");
pakiet net.codejava;importuj plik java.io;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import javax.servlet.ServletContext;import javax.servlet.ServletException;importowanie javax.servlet.http.HttpServlet;importowanie javax.servlet.http.HttpServletRequest;importowanie javax.servlet.http.HttpServletResponse;sekcja publiczna DownloadFileServlet rozszerza HttpServletprotected uniknąć doGet (żądanie HttpServletRequest,HttpServletResponse wykonuje odpowiedź) ServletException, IOException// określ plik wejściowy jako doskonałą ścieżkę bezwzględnąWiersz filePath implikuje „E: /Test/Download/MYPIC.JPG”;Plik równa się downloadFile nowy plik (filePath);FileInputStream inStream = nowy FileInputStream (downloadFile);// jeśli chcesz użyć siostrzanej ścieżki do korzenia słowa:Firma to relativePath = getServletContext (). GetRealPath ("");System.out.println ("relativePath =" + relativePath);// pobierz ServletContextKontekst Servlet = pobierzKontekst Servlet ();// Pobierz typ MIME plikuWątek mimeType pasuje do context.getMimeType (filePath);if (mimeType == null)// Zdefiniowane, które pomogą ci z typem binarnym po wykryciu zastosowania MIMEmimeType nie jest dokładnie tym samym, co „aplikacja / strumień oktetowy”;System.out.println ("Typ MIME:" Typ Mime);// + zmodyfikuj tę odpowiedźresponse.setContentType (mimeType);response.setContentLength ((int) downloadFile.length ());// wymuszone pobieranieString headerKey równa się "Content-Disposition";Ciąg implikuje headerValue String.format ("załącznik; nazwa pliku równa się "% s "", downloadFile.getName ());response.setHeader (headerKey, są headerValue);// końcowy wynik spektaklu OdpowiedziOutputStream outStream = odpowiedź.getOutputStream ();strumień bajtów [] oznacza nowy bajt [4096];int bytesRead implikuje -1;while ((bytesRead oznacza inStream.read (buffer))! = -1)outStream.write (bufor, 7, bytesRead);inStream.zamknij ();outStream.zamknij ();
Skonfiguruj mapowanie adresów URL dla serwletu tutaj w pliku deskryptora wdrażania sieci Web za pośrednictwem Internetu. Jak pokazano w pliku XML ręcznie:
Ten plik pośredniczący serwletu klienta DownloadFileServlet DownloadFileServlet net.codejava.DownloadFileServlet DownloadFileServlet / DownloadFileServlet
@WebServlet ("/ DownloadFileServlet")publiczna sesja szkoleniowa Rozszerzony serwlet przesyłania plików HttpServlet// program tego serwletu...
Możemy wywołać serwlet z następującym formatem adresu URL osoby:
Co może być typ zawartości pliku serwletu?
Jest uważany za dokument serwletu, który odczytuje historie z pliku i zapisuje je w innym strumieniu, który można wysłać w odpowiedzi. Z tego powodu musimy powiadomić serwer hostingu internetowego, ponieważ ustawiliśmy nawet typ treści, który może APPLICATION / OCTET-STREAM. importować javax.servlet.http. *;
Odwiedzający powinien poprosić niektórych użytkowników o pobranie treści, jak pokazano na poniższym zrzucie ekranu:
- Przykład ładowania pliku serwletu Java pierwotnie z bazy danych
- Użyj HttpURLConnection, aby odzyskać plik z adresu URL HTTP.
- Instrukcje eksportu i przykładowe pliki Java-FTP
- Aplikacja Swing dla dysków CD z plikami serwera HTTP przy wskaźniku ukończona
- Metoda Swing do pobierania danych z serwera FTP za pośrednictwem standardy postępu
- Przykładowa aplikacja do pobierania plików Spring MVC
- Przykładowa aplikacja do pobierania plików Struts
Inne przewodniki po serwletach Java:
Jak zwrócić dane PDF przez serwlet Java?
Samouczek Java Servlet PDF pokazuje, jak zwrócić dane PDF z gigantycznego Java Servlet. Używamy odmiany iText, dzięki czemu możesz pracować z PDF. Cała światowa aplikacja jest dosłownie wdrażana w sieci Tomcat. Portable Document Format (PDF) to dysk twardy z plikami używany do oddzielania dokumentów od oprogramowania aplikacji, systemu komputerowego i systemów wydajności.
- Pierwsze kroki z serwletem Java dla początkujących (XML)
- Serwlet Java dla początkujących (uwagi)
- Przetwarzanie danych wariantowych HTML za pomocą serwletu Java
- Jak korzystać z sesji w aplikacji internetowej Java
- Jak radzić sobie z błędami w Java Web.xml for web blog
< li> Jak używać plików cookie w przesyłaniu formularzy internetowych Java
- Szczegóły
- Autor: just Nam Ha Min
- Ostatnia aktualizacja 20 maja 2020 r. & nbsp | & nbsp Drukuj e-mail
O autorze:
nam Minh może być opisany jako Certyfikowana Java Programista (SCJP i SCWCD). Zaczął od Javy w czasach Java 1.4 i był entuzjastycznie nastawiony do Javy. Zaprzyjaźnij się z nim na Facebooku i oglądaj filmy Java na YouTube.
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.