Przesyłanie plików JSP & Przykłady programów pobierania plików

Spisie treści:

Anonim

W tym przykładzie dowiemy się o wysyłaniu i pobieraniu pliku przez JSP.

Plik wyjściowy to bardzo ważne operacje. Tutaj będziemy czytać i zapisywać plik za pomocą JSP.

Przesyłanie plików JSP

  • Możemy przesyłać dowolne pliki za pomocą JSP.
  • Może to być plik tekstowy, plik binarny, plik obrazu lub dowolny inny dokument.
  • Tutaj w przypadku przesyłania plików zostanie użyta tylko metoda POST, a nie metoda GET.
  • Atrybut Enctype powinien mieć wartość multipart / form-data.

Przykład: użycie akcji

W tym przykładzie przesyłamy plik przy użyciu obiektu IO

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Plik Guru  Przesyłanie pliku Guru: Wybierz plik:

Action_file_upload.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. *, java.util. *, javax.servlet. *"%><% @ page import = "javax.servlet.http. *"%><% @ page import = "org.apache.commons.fileupload. *"%><% @ page import = "org.apache.commons.fileupload.disk. *"%><% @ page import = "org.apache.commons.fileupload.servlet. *"%><% @ page import = "org.apache.commons.io.output. *"%> Przesyłanie pliku Guru <%Plik pliku;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory = new DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (nowy plik ("c: \\ temp"));ServletFileUpload upload = new ServletFileUpload (fabryka);upload.setSizeMax (maxFileSize);próbować{Lista fileItems = upload.parseRequest (żądanie);Iterator i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();boolean isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = new File (filePath + "yourFileName");fi.write (plik);out.println ("Przesłana nazwa pliku: + ścieżka_pliku + nazwa_pliku + "
");}}out.println ("");out.println ("");} catch (Exception ex) {System.out.println (ex);}}jeszcze{out.println ("");out.println ("");out.println ("

Nie przesłano żadnego pliku

");out.println ("");out.println ("");}%>

Wyjaśnienie kodu:

Action_file.jsp

Linia kodu 12-18: Tutaj tworzymy formularz z polem pliku, który załaduje plik na serwer, a akcja zostanie przekazana do action_file_upload.jsp

Action_file_upload.jsp

Code Line 20: Tutaj podajemy ścieżkę do pliku do określonej ścieżki

Code Line 23-38: Tutaj sprawdzamy, czy typ zawartości to multipart / form-data. W takim przypadku zawartość jest typu pliku i jest odczytywana. Po odczytaniu pliku jest on zapisywany do pliku tymczasowego, a następnie plik tymczasowy jest konwertowany do pliku głównego.

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe

Wynik:

Wgrywamy plik za pomocą opcji przycisk wyboru pliku, a przycisk wgraj plik załaduje plik na serwer pod wskazaną ścieżkę.

Przykład: korzystanie z operacji JSP

W tym przykładzie zamierzamy przesłać plik przy użyciu operacji JSP.

Przyjmiemy formularz, który będzie miał przycisk „prześlij”, a po kliknięciu przycisku wysyłania plik zostanie przesłany.

Uploading_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Przesyłanie pliku przez guru Plik:

Wyjaśnienie kodu:

Linia kodu 11-12: Tutaj bierzemy formularz, który ma akcję na serwlecie guru_upload, który przejdzie przez metodę POST. Tutaj również szyfrujemy np. Atrybut, który określa, w jaki sposób dane formularza mają być kodowane i wysyłane na serwer i jest używany tylko z metodą POST. Tutaj ustawiamy jako dane wieloczęściowe / formularze, które są przeznaczone dla pliku (ponieważ dane będą duże).

Linia kodu 13: Tutaj określamy element guru_file z plikiem typu i podajemy rozmiar 50.

Linia kodu 15: Jest to przycisk typu przesyłania z nazwą „Prześlij”, za pomocą którego zostanie wywołany serwlet akcji i żądanie zostanie przetworzone w nim, a plik zostanie odczytany i zapisany w serwlecie.

Guru_upload.java

pakiet demotest;import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class guru_upload rozszerza HttpServlet {prywatne statyczne końcowe długie serialVersionUID = 1L;public guru_upload () {Wspaniały();// TODO Automatycznie wygenerowany kod konstruktora}protected void doPost (żądanie HttpServletRequest, odpowiedź HttpServletResponse) throws ServletException, IOException {if (ServletFileUpload.isMultipartContent (request)) {próbować {List  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (request);for (element FileItem: multiparts) {if (! item.isFormField ()) {Nazwa ciągu = nowy Plik (item.getName ()). GetName ();item.write (new File ("c: / guru / upload" + File.separator + name));}}// Plik został pomyślnie przesłanyrequest.setAttribute ("gurumessage", "Plik przesłany pomyślnie");} catch (Exception ex) {request.setAttribute ("gurumessage", "Przesyłanie pliku nie powiodło się z powodu" + ex);}}jeszcze{request.setAttribute ("gurumessage", "Nie znaleziono pliku");}request.getRequestDispatcher ("/ result.jsp"). forward (żądanie, odpowiedź);}}

Wyjaśnienie kodu:

Linia kodu 12-14: Tutaj będziemy musieli zaimportować bibliotekę org.apache.commons do konfiguracji kodu. Będziemy musieli zaimportować klasę fileupload z biblioteki org.apache.commons.

Linia kodu 23: Mamy tutaj metodę doPost (), która zostanie wywołana podczas przekazywania metody POST w JSP i będzie żądać i odpowiadać na obiekty jako parametry

Linia kodu 26: Tutaj tworzymy obiekt klasy ServletFileUpload z pakietu fileUpload z biblioteki org.apache.commons, który sprawdzi, czy w JSP są jakieś obiekty plików. Jeśli jakikolwiek zostanie znaleziony, ten obiekt pliku zostanie pobrany z żądania.

Linia kodu 27-32: Będziemy iterować liczbę plików, sprawdzając, ile elementów pliku znajduje się w obiekcie wieloczęściowym, który jest obiektem listy (jeśli załadujemy więcej niż jeden plik) i zapiszemy go do folderu c: / guru / upload z podana nazwa pliku. Zapisujemy plik metodą write obiektu fileobject do wspomnianego folderu.

Linia kodu 34: Jeśli nie ma wyjątku, ustawiamy atrybut w żądaniu jako gurumessage o wartości "Plik został przesłany pomyślnie".

Wiersz kodu 35-36: Jeśli wystąpi wyjątek, ustawia się komunikat „Przesyłanie pliku nie powiodło się”

Linia kodu 40: jeśli nie znaleziono pliku, ustaw komunikat jako „Nie znaleziono pliku”

Linia kodu 42: Przekazywanie żądania przy użyciu obiektu requestdispatcher do result.jsp z obiektami żądania i odpowiedzi.

Result.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Wynik guru <% String msg = (String) request.getAttribute ("wiadomość");out.println (msg);%>

Wyjaśnienie kodu:

Linia kodu 10: Tutaj pobieramy atrybut z obiektu żądania o wartości gurumessage do obiektu typu string.

Code Line11: Tutaj drukujemy tę wiadomość.

Kiedy wykonujemy powyższy kod, otrzymujemy następujące dane wyjściowe

Wynik:

Otrzymujemy formularz, w którym znajdują się pola do wyboru pliku z katalogu. Po wybraniu pliku musimy kliknąć przycisk przesyłania.

Po kliknięciu przycisku przesyłania otrzymujemy komunikat, że plik został pomyślnie przesłany.

Na poniższym diagramie widzimy, że plik został przesłany do folderu c: / guru / upload.

Pobieranie pliku:

W tym przykładzie pobieramy plik z katalogu, klikając przycisk.

Pobieranie_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Pobieranie przykładu guru Guru Pobieranie pliku  Pobierz tutaj !!! 

Wyjaśnienie kodu:

Linia kodu 10: Tutaj podaliśmy link do pobrania pliku z folderu c: / guru / upload przy użyciu serwletu guru_download.

Guru_download.java

pakiet demotest;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/ *** Klasa implementacji serwletu guru_download* /public class guru_download rozszerza HttpServlet {prywatne statyczne końcowe długie serialVersionUID = 1L;protected void doGet (żądanie HttpServletRequest, odpowiedź HttpServletResponse) throws ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Dyspozycja zawartości", "załącznik; nazwa_pliku = \" "+ gurufile + "\" ");FileInputStream fileInputStream = nowy FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (żądanie HttpServletRequest, odpowiedź HttpServletResponse)* /protected void doPost (żądanie HttpServletRequest, odpowiedź HttpServletResponse) throws ServletException, IOException {// TODO Automatycznie wygenerowany kod pośredniczący metody}}

Wyjaśnienie kodu:

Linia kodu 3-5: Tutaj importujemy FileInputStream, IO Exception i PrintWriter z pakietu java.io.

Linia kodu 15: Definiujemy serwlet guru_download, który rozszerza HttpServlet.

Linia kodu 18: Tak jak zdefiniowaliśmy href, który będzie zawarty w adresie URL, więc metoda GET zostanie przetworzona (doGet zostanie wywołana w serwlecie), która zawiera również obiekty żądań i odpowiedzi.

Code Line 19-20: Ustawiamy typ zawartości w obiekcie odpowiedzi, a także otrzymujemy obiekt pisarza z odpowiedzi.

Code Line 21-22: Definiowanie zmiennej jako gurufile jako wartość test.txt i gurupath jako c: / guru / upload /

Linia kodu 23-25: Ustawiamy typ zawartości za pomocą obiektu odpowiedzi i używamy metody setHeader, która ustawia nagłówek w obiekcie odpowiedzi jako nazwę przesłanego pliku.

Linia kodu 27-28: Tworzymy FileInputStream, w którym dodamy gurupath + gurufile.

Linia kodu 31-33: Tutaj zrobiliśmy pętlę while, która będzie działać do momentu odczytania pliku, stąd warunek podaliśmy jako! = -1. W tym stanie piszemy używając obiektu printwriter out.

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe

Wynik:

Wynik:

Musimy kliknąć download_1.jsp, otrzymamy hiperłącze w postaci „Pobierz tutaj”. Po kliknięciu tego pliku hiperłącza zostanie on pobrany do systemu.

Podsumowanie:

  • Dowiedzieliśmy się o formularzu rejestracyjnym, aby zarejestrować się w dowolnej aplikacji
  • Dowiedz się więcej o tym, jak działają formularze logowania i wylogowania.
  • Dowiedziałem się również o wysyłaniu i pobieraniu pliku przez JSP.