JSP может загружать файлы на сервер через HTML-формы. Тип файла может быть текстовым файлом, двоичным файлом, файлом изображения или любым другим документом.
Далее мы используем HTML-теги для создания формы загрузки файла. Следует отметить следующие моменты:
Атрибут метода формы должен быть установлен на метод POST, а метод GET использовать нельзя.
Атрибут form enctype должен иметь значение multipart/form-data.
Атрибут действия формы должен быть установлен на адрес файла jsp, отправленный в фоновый режим для загрузки файла. Например, программный файл uploadFile.jsp используется для обработки загруженных файлов.
Чтобы загрузить элемент файла, вам необходимо использовать тег <input .../> и установить атрибут type="file". Если вам нужно загрузить несколько файлов, вы можете указать разные имена в теге <input .../>.
Ниже представлена форма для загрузки файлов. Пример:
<html><head><title>Форма загрузки файла</title></head><body><h3>Загрузка файла:</h3>Выберите файл для загрузки: <br /><form action="UploadServlet" метод="post" enctype="multipart/form-data"><input type="file" name="file" size="50" /><br /><input type="submit" value="Загрузить файл" " /></form></body></html>Получите доступ к файлу в локальном браузере. Интерфейс дисплея выглядит следующим образом. Когда вы нажмете «Загрузить файл», появится всплывающее окно, позволяющее выбрать файл для загрузки:
Во-первых, мы сначала определяем место, где файл хранится в сервисе после загрузки. Вы можете написать путь в своей программе или мы можем установить каталог, в котором хранится файл, установив элемент context-param в файле web.xml. файл конфигурации, как показано ниже. Показать:
<web-app>....<context-param> <description>Адрес загрузки файла</description> <param-name>file-upload</param-name> <param-value> c:apache-tomcat- 5.5.29webappsdata </param-value> </context-param>....</web-app>
Следующий файл сценария UploadFile.jsp может обрабатывать несколько загруженных файлов. Прежде чем использовать этот сценарий, нам необходимо обратить внимание на следующие моменты:
Следующий пример основан на FileUpload, поэтому вам необходимо добавить последний файл пакета commons-fileupload.xxjar в ваш путь к классам. Адрес загрузки: http://commons.apache.org/fileupload/.
FileUpload использует Commons IO, поэтому вам необходимо добавить последнюю версию commons-io-xxjar в свой путь к классам. Адрес загрузки: http://commons.apache.org/io/.
При тестировании следующего примера вам необходимо загрузить и подтвердить, что размер загруженного файла меньше размера, установленного переменной maxFileSize , в противном случае файл не может быть успешно загружен.
Убедитесь, что вы создали каталоги c:temp и c:apache-tomcat-5.5.29webappsdata.
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %><%@ page import="javax.servlet.http.*" %><%@ page import= "org.apache.commons.fileupload.*" %><%@ страница import="org.apache.commons.fileupload.disk.*" %><%@ страница import="org.apache.commons.fileupload.servlet.*" %><%@ page import="org.apache.commons.io.output.*" %><% File file; int maxFileSize = 5000 * 1024; int maxMemSize = 5000 * 1024 контекст ServletContext = pageContext.getServletContext(); context.getInitParameter("file-upload"); // Проверка типа загружаемого контента String contentType = request.getContentType(); if ((contentType.indexOf("multipart/form-data") >= 0)) { DiskFileItemFactory Factory = new DiskFileItemFactory(); // Устанавливаем максимальный размер файлов, хранящихся в памяти. Factory.setSizeThreshold(maxMemSize); // Локально хранящиеся данные превышают maxMemSize.factory.setRepository(new File("c:\temp")); // Создаем новый обработчик загрузки файлов ServletFileUpload upload = new ServletFileUpload(factory); // Устанавливаем максимальный размер загружаемого файла; upload.setSizeMax( maxFileSize ); try{ // Разбираем полученный файл List fileItems = upload.parseRequest(request); Обработать загруженные файлы Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>Загрузка файла JSP</title> " ); out.println("</head>"); out.println("<body>"); 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(); // Запись в файл if( fileName.lastIndexOf("\") >= 0 ){ file = новый файл( filePath , fileName.substring( fileName.lastIndexOf("\"))) ; }else { file = new File( filePath , fileName.substring(fileName.lastIndexOf("\")+1) }; fi.write(file) ; out.println("Имя загруженного файла: " + путь к файлу + имя_файла + "<br>"); out.println("</body>"); out.println("</html>"); }catch(Exception ex) { System.out.println(ex); }else{ out.println("< html>"); out.println("<head>"); out.println("<title>Загрузка сервлета</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>Файл не загружен</p>"); out.println("</body>"); out.println("</html> "); }%>
Затем давайте получим доступ к http://localhost:8080/UploadFile.htm через браузер. Интерфейс показан ниже, и загрузим файл:
Если ваш JSP-скрипт работает нормально, файл будет загружен в c:apache-tomcat-5.5.29webappsdata. Вы можете открыть папку и проверить, прошла ли загрузка успешно.