Загрузка файла JSP & Примеры программ загрузки файлов

Содержание:

Anonim

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

File Input output - очень важные операции. Здесь мы собираемся читать и записывать файл с помощью JSP.

Загрузка файла JSP

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

Пример: использование действия

В этом примере мы загружаем файл с помощью объекта ввода-вывода.

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";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = новый DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (новый файл ("c: \\ temp"));ServletFileUpload upload = новый ServletFileUpload (заводская);upload.setSizeMax (maxFileSize);пытаться{Список fileItems = upload.parseRequest (запрос);Итератор i = fileItems.iterator ();out.println ("");out.println ("<тело>");в то время как (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {Строка fieldName = fi.getFieldName ();Строка fileName = fi.getName ();логическое isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();файл = новый файл (filePath + "yourFileName");fi.write (файл);out.println ("Имя загруженного файла: + путь к файлу + имя файла + "
");}}out.println ("");out.println ("");} catch (Exception 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: Здесь мы проверяем, является ли тип содержимого multipart / form-data. В этом случае содержимое относится к типу файла и читается. После чтения файл записывается во временный файл, а затем временный файл преобразуется в основной файл.

Когда вы выполняете приведенный выше код, вы получаете следующий результат

Выход:

Мы загружаем файл с помощью кнопки выбора файла, а кнопка загрузки файла загрузит файл на сервер по указанному пути.

Пример: использование операций JSP

В этом примере мы собираемся загрузить файл с помощью операций JSP.

Мы возьмем форму, в которой будет кнопка «загрузить», и когда вы нажмете кнопку загрузки, файл будет загружен.

Uploading_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Гуру, загружающий файл Файл:

Расшифровка кода:

Строка кода 11-12: Здесь мы берем форму, которая имеет действие над сервлетом guru_upload, которое будет проходить через метод POST. Кроме того, здесь мы используем атрибут enctype, т.е. атрибут, который указывает, как данные формы должны быть закодированы и отправлены на сервер, и он используется только с методом POST. Здесь мы устанавливаем multipart / form-data для файла (так как данные будут большими).

Строка кода 13: Здесь мы указываем элемент guru_file с типом file и задаем размер 50.

Строка кода 15: это кнопка типа отправки с именем «Загрузить», через которую будет вызываться сервлет действия, и запрос будет обработан в нем, а файл будет прочитан и записан в сервлет.

Guru_upload.java

демотест пакета;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;открытый класс guru_upload расширяет HttpServlet {частный статический финальный длинный serialVersionUID = 1L;public guru_upload () {супер();// TODO Заглушка автоматически сгенерированного конструктора}protected void doPost (запрос HttpServletRequest, ответ HttpServletResponse) выбрасывает ServletException, IOException {if (ServletFileUpload.isMultipartContent (запрос)) {пытаться {Список  multiparts = новый ServletFileUpload (новый DiskFileItemFactory ()). ParseRequest (запрос);for (элемент FileItem: multiparts) {if (! item.isFormField ()) {Имя строки = новый файл (item.getName ()). GetName ();item.write (новый файл ("c: / guru / upload" + File.separator + name));}}//Файл успешно загруженrequest.setAttribute ("gurumessage", "Файл успешно загружен");} catch (Exception ex) {request.setAttribute ("gurumessage", "Ошибка загрузки файла из-за" + ex);}}еще{request.setAttribute ("gurumessage", "Файл не найден");}request.getRequestDispatcher ("/ result.jsp"). forward (запрос, ответ);}}

Расшифровка кода:

Строка кода 12-14: Здесь нам нужно будет импортировать библиотеку org.apache.commons в конфигурацию кода. Нам нужно будет импортировать класс fileupload из библиотеки org.apache.commons.

Строка кода 23: Здесь у нас есть метод doPost (), который будет вызываться, когда мы передаем метод POST в JSP, и он будет запрашивать и отвечать на объекты в качестве своих параметров.

Строка кода 26: Здесь мы создаем объект класса ServletFileUpload из пакета fileUpload из библиотеки org.apache.commons, который проверяет, есть ли какие-либо файловые объекты в JSP. Если они найдены, то этот файловый объект будет взят из запроса.

Строка кода 27-32: мы будем повторять количество файлов, проверяя, сколько элементов файла присутствует в объекте multiparts, который является объектом списка (если мы загружаем более одного файла), и сохраняем его в папку c: / guru / upload с помощью имя файла, которое было предоставлено. Мы записываем файл, используя метод записи файлового объекта в указанную папку.

Строка кода 34: Если нет исключения, мы устанавливаем атрибут в запросе как gurumessage со значением «Файл успешно загружен».

Строка кода 35-36: Если возникает исключение, то устанавливается сообщение о том, что «Загрузка файла не удалась»

Строка кода 40: Если файл не найден, установите сообщение «Файл не найден»

Строка кода 42: Перенаправление запроса с использованием объекта requestdispatcher в result.jsp с объектами запроса и ответа.

Result.jsp

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

Расшифровка кода:

Строка кода 10: Здесь мы получаем атрибут из объекта запроса со значением gurumessage в строковый объект.

Строка кода 11: Здесь мы печатаем это сообщение.

Когда мы выполняем приведенный выше код, мы получаем следующий вывод

Выход:

Получаем форму, в которой есть поля для выбора файла из каталога. После того, как файл выбран, мы должны нажать кнопку загрузки.

После нажатия кнопки загрузки мы получаем сообщение об успешной загрузке файла.

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

Скачивание файла:

В этом примере мы собираемся загрузить файл из каталога, нажав кнопку.

Downloading_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

демотест пакета;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;/ *** Класс реализации сервлета guru_download* /открытый класс guru_download расширяет HttpServlet {частный статический финальный длинный serialVersionUID = 1L;protected void doGet (запрос HttpServletRequest, ответ HttpServletResponse) выбрасывает ServletException, IOException {response.setContentType ("текст / html");PrintWriter out = response.getWriter ();Строка gurufile = "test.txt";Строка gurupath = "c: / guru / upload /";response.setContentType ("ПРИЛОЖЕНИЕ / ОКТЕТНЫЙ ПОТОК");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = новый FileInputStream (gurupath+ гуруфиле);int i;while ((i = fileInputStream.read ())! = -1) {out.write (я);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (запрос HttpServletRequest, ответ HttpServletResponse)* /protected 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. В этом состоянии мы пишем, используя объект printwriter out.

Когда вы выполните приведенный выше код, вы получите следующий результат

Выход:

Выход:

Мы должны нажать на download_1.jsp, мы получим гиперссылку «Скачать здесь». Когда вы нажимаете на этот файл гиперссылки, он загружается в систему.

Резюме:

  • Мы узнали о регистрационной форме для регистрации в любом приложении
  • Узнал больше о том, как работают формы входа и выхода.
  • Также узнал о загрузке и скачивании файла через JSP.