Качване на JSP файл & Примери за програма за изтегляне на файлове

Съдържание:

Anonim

В този пример ще научим за качването и изтеглянето на файл чрез JSP.

Изходът за въвеждане на файлове са много важни операции. Тук ще прочетем и напишем файл с помощта на JSP.

Качване на JSP файл

  • Можем да качваме всякакви файлове с помощта на JSP.
  • Това може да бъде текстов файл, двоичен файл, файл с изображения или друг документ.
  • Тук в случай на качване на файл ще се използва само методът POST, а не методът GET.
  • Атрибутът Enctype трябва да бъде зададен на multipart / form-data.

Пример: Използване на Action

В този пример качваме файл с помощта на IO обект

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Гуру файл  Качване на файл на гуру: Изберете файл:

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. *"%> Качване на файл на гуру <%Файлов файл;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";Низ contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = нов DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (нов файл ("c: \\ temp"));ServletFileUpload качване = ново ServletFileUpload (фабрично);upload.setSizeMax (maxFileSize);опитвам{Списък fileItems = upload.parseRequest (заявка);Итератор i = fileItems.iterator ();out.println ("");out.println ("");докато (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {Име на полето на низа = fi.getFieldName ();String fileName = fi.getName ();булева isInMemory = fi.isInMemory ();дълъг размерInBytes = fi.getSize ();файл = нов файл (filePath + "yourFileName");fi.write (файл);out.println ("Качено име на файл: + filePath + fileName + "
");}}out.println ("");out.println ("");} catch (Изключение ex) {System.out.println (ex);}} друго {out.println ("");out.println ("");out.println ("

Няма качен файл

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

Обяснение на кода:

Action_file.jsp

Кодов ред 12-18: Тук създаваме формуляр с файлово поле, който ще качи файл на сървъра и действието ще бъде предадено на action_file_upload.jsp

Action_file_upload.jsp

Кодов ред 20: Тук даваме пътя на файла към определен път

Кодов ред 23-38: Тук проверяваме дали типът съдържание е многочаст / form-data. Ако случаят е такъв, тогава съдържанието е от файлов тип и се чете. След като файлът бъде прочетен, той се записва във временния файл и след това временният файл се преобразува в основния файл.

Когато изпълнявате горния код, получавате следния изход

Изход:

Качваме файл, като използваме опцията бутон за избор на файл, а бутонът за качване на файл ще качи файла на сървъра на посочения път.

Пример: Използване на JSP операции

В този пример ще качим файл, използвайки JSP операции.

Ще вземем формуляр, който ще има бутон "качване" и когато кликнете върху бутона за качване, файлът ще бъде качен.

Качване_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Качване на файл от гуру Файл:

Обяснение на кода:

Кодов ред 11-12: Тук приемаме форма, която има действие върху сървлета guru_upload, който ще премине през метод POST. Също така тук имаме enctype, т.е. атрибут, който указва как данните от формуляра трябва да бъдат кодирани и изпратени до сървъра и той се използва само с POST метод. Тук задаваме като многочасти / данни за формуляри, които са за файла (тъй като данните ще бъдат големи).

Кодов ред 13: Тук посочваме елемента guru_file с тип файл и даваме размер като 50.

Кодов ред 15: Това е бутон за тип на изпращане с име „Качване“, чрез който ще бъде извикан сървлет за действие и заявката ще бъде обработена в него и файлът ще бъде прочетен и записан в сървлета.

Guru_upload.java

демотест на пакета;import java.io.File;импортиране на java.io.IOException;импортиране на java.util.List;импортиране на javax.servlet.ServletException;импортиране на javax.servlet.http.HttpServlet;импортиране на javax.servlet.http.HttpServletRequest;импортиране на javax.servlet.http.HttpServletResponse;импортиране на org.apache.commons.fileupload.FileItem;импортиране на org.apache.commons.fileupload.disk.DiskFileItemFactory;импортиране на org.apache.commons.fileupload.servlet.ServletFileUpload;публичен клас guru_upload разширява HttpServlet {частен статичен краен дълъг serialVersionUID = 1L;публичен guru_upload () {супер ();// TODO Автоматично генериран заглушител на конструктор}защитена void doPost (HttpServletRequest заявка, HttpServletResponse отговор) хвърля ServletException, IOException {if (ServletFileUpload.isMultipartContent (заявка)) {опитвам {Списък  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (заявка);за (FileItem елемент: multiparts) {if (! item.isFormField ()) {Име на низ = нов файл (item.getName ()). GetName ();item.write (нов файл ("c: / guru / upload" + File.separator + name));}}// Файлът е качен успешноrequest.setAttribute ("gurumessage", "Файлът е качен успешно");} catch (Изключение ex) {request.setAttribute ("gurumessage", "Качването на файл е неуспешно поради" + ex);}} друго {request.setAttribute ("gurumessage", "Няма намерен файл");}request.getRequestDispatcher ("/ result.jsp"). forward (заявка, отговор);}}

Обяснение на кода:

Код ред 12-14: Тук ще трябва да импортираме библиотека org.apache.commons в конфигурацията на кода. Ще трябва да импортираме клас за зареждане на файлове от библиотеката org.apache.commons.

Кодов ред 23: Тук имаме метод doPost (), който ще бъде извикан, докато предаваме метода POST в JSP и той ще поиска обекти и отговори като свои параметри

Кодов ред 26: Тук създаваме обект от клас ServletFileUpload от пакета fileUpload от библиотеката org.apache.commons, който ще провери дали в JSP има файлови обекти. Ако някой бъде намерен, тези файлови обекти ще бъдат взети от заявката.

Кодов ред 27-32: Ще повторим броя на файловете, като проверим колко файлов елемент присъства в обект с много части, който е обект на списък (ако качим повече от един файл) и ще го запишем в c: / guru / upload папка с предоставеното име на файла. Записваме файла, като използваме метода за запис на обекта на файла в споменатата папка.

Кодов ред 34: Ако няма изключение, тогава ние задаваме атрибут в заявката като gurumessage със стойност "Файлът е качен успешно".

Кодов ред 35-36: Ако възникне изключение, тогава се появява съобщение, че „Качването на файл не е успешно

Кодов ред 40: Ако файлът не е намерен, тогава съобщението се задава като „Не е намерен файл“

Кодов ред 42: Препращане на заявка с помощта на обект requestdispatcher към result.jsp с обекти на заявка и отговор.

Резултат.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Резултат от гуру <% String msg = (String) request.getAttribute ("съобщение");out.println (msg);%>

Обяснение на кода:

Кодов ред 10: Тук получаваме атрибута от обекта на заявката със стойност gurumessage в низ обект.

Код Line11: Тук отпечатваме това съобщение.

Когато изпълним горния код, получаваме следния изход

Изход:

Получаваме форма, в която има полета за избор на файл от директория. След като файлът бъде избран, трябва да кликнете върху бутона за качване.

След като щракнете върху бутона за качване, получаваме съобщението, че файлът е качен успешно.

На диаграмата по-долу можем да видим, че файлът е качен в папката c: / guru / upload.

Изтегляне на файл:

В този пример ще изтеглим файл от директория, като щракнем върху бутона.

Изтегляне_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Изтегляне на пример за гуру Guru Изтегляне на файл  Изтегляне от тук !!! 

Обяснение на кода:

Кодов ред 10: Тук сме дали връзка за изтегляне на файл от папка c: / guru / upload с помощта на сървлета guru_download.

Guru_download.java

демотест на пакета;импортиране на java.io.FileInputStream;импортиране на java.io.IOException;импортиране на java.io.PrintWriter;импортиране на javax.servlet.ServletException;импортиране на javax.servlet.http.HttpServlet;импортиране на javax.servlet.http.HttpServletRequest;импортиране на javax.servlet.http.HttpServletResponse;/ *** Клас за изпълнение на сървлет guru_download* /публичен клас guru_download разширява HttpServlet {частен статичен краен дълъг serialVersionUID = 1L;protected void doGet (HttpServletRequest заявка, HttpServletResponse отговор) хвърля ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";Низ gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = нов FileInputStream (gurupath+ gurufile);int i;докато ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (HttpServletRequest заявка, HttpServletResponse отговор)* /защитена void doPost (HttpServletRequest заявка, HttpServletResponse отговор) хвърля ServletException, IOException {// TODO Автоматично генериран мъниче от метод}}

Обяснение на кода:

Кодов ред 3-5: Тук импортираме FileInputStream, IO Exception и PrintWriter от пакета java.io.

Код ред 15: Ние определяме guru_download сървлета, който разширява HttpServlet.

Кодов ред 18: Както дефинирахме href, който ще бъде затворен в URL, така че методът GET ще бъде обработен (doGet ще бъде извикан в сървлет), който също така обхваща обекти за заявки и отговори.

Кодов ред 19-20: Задаваме съдържание Впишете обект за отговор и също така вземете обект на запис от отговора.

Кодов ред 21-22: Дефиниране на променлива като gurufile като стойност test.txt и gurupath като c: / guru / upload /

Кодов ред 23-25: Задаваме типа съдържание с помощта на обект за отговор и използваме метода setHeader, който задава заглавката в обекта на отговор като име на файл, който е качен.

Кодов ред 27-28: Създаваме FileInputStream, в който ще добавим gurupath + gurufile.

Кодов ред 31-33: Тук сме взели цикъл while, който ще се изпълнява, докато файлът бъде прочетен, следователно сме дали условие като! = -1. В това състояние пишем, като използваме обект на принтера.

Когато изпълните горния код, ще получите следния изход

Изход:

Изход:

Трябва да кликнете върху downloading_1.jsp, ще получим хипервръзка като "Изтегляне тук". Когато кликнете върху този файл с хипервръзка, той ще се изтегли в системата.

Резюме:

  • Научихме за регистрационния формуляр за регистрация във всяко приложение
  • Научихте повече за това как работят формулярите за влизане и излизане.
  • Също така научих за качването и изтеглянето на файл чрез JSP.