Спецификация Servlet 3.0 HttpservletRequest предоставила метод обработки загрузки файлов, но такие загрузки необходимо сделать в сервлете. Struts2 обеспечивает более простой пакет.
STRUTS2 по умолчанию использует структуру загрузки файлов Jakarta. Поэтому, используя функцию загрузки файлов Struts2, вам необходимо добавить два пакета JAR, а именно Commons-IO-2.2.jar и Commons-FileUpload-1.3.1.jar.
Struts2 простая загрузка файла Пример:
1. Страница загрузки файла
Чтобы загрузить файлы, метод формы должен быть установлен для публикации, а ectype установлен в Multipart/Form-Data. После того, как EncType установлен в Multipart/Form-Data, браузер будет использовать двоичные потоки для обработки данных формы.
<%@ taglib prefix = "s" uri = "/struts-tags"%> <%-создан Intellij Idea. Пользователь: Администратор Дата: 2018/16. Настройки | Шаблоны файлов .--%> <%@ page contentype = "text/html; charset = utf-8" language = "java"%> <html> <head> <Title> struts2 Простая загрузка файла </title> </head> <body> <s: form action = "file_upload" method = "ectype =" multiprate/form-data "sepload" ectype = "multip/form-data" sepload "ectype =" uptaRta "=" file_upload "ectype =". label = "select file"/> <s: отправить значение = "upload"/> </s: форма> </body> </html>
2. Обработайте действие запроса загрузки
/**! // загрузить тип файла private String uploadcontentType; // загрузить имя файла private string uploadfilename; // Загрузить загрузку файла AlltyPes; Приватные строки alluctrypes динамически устанавливаются в struts.xml с использованием тега Param в struts.xml; public String page () {return "Page"; } public void upload () {// upload: // 1. Прочтите содержимое файла // 2. Записать содержимое файла в указанный файл try {system.out.println ("upload file allow type ="+allucttypes); String realPath = ServletActionContext.getServletContext (). GetRealPath ("/upload"); System.out.println ("Абсолютный путь проекта ="+realpath); // Создать файл Сохранить каталог нового файла (realPath) .mkdir (); File file = new File (realPath+"/"+uploadFilename); // Создать if (! File.exists ()) {file.createnewFile (); } FileOutputStream OUT = new FileOutputStream (file); FileInputStream in = new FileInputStream (upload); Byte [] buffer = новый байт [1024]; int len = 0; // записать во время чтения и записи 1 КБ каждый раз писать 1 кб, while ((len = in.read (buffer))> 0) {out.write (буфер, 0, len); } System.out.println ("Успешно загрузка файла ..."); } catch (Exception e) {e.printstackTrace (); }} public file getUpload () {return upload; } public void setUpload (upload file) {this.upload = upload; } public String getUploadContentType () {return uploadContentType; } public void setUploadContentType (string uploadContentType) {this.UploadContentType = uploadContentType; } public String getUploadFilename () {return uploadfilename; } public void setUploadFilEname (string uploadfilEname) {this.uploadFilename = uploadfilename; } public String getAllowtypes () {return alluctrypes; } public void setAllowTypes (string alluckTypes) {this.AllowTypes = alluctTypes; }}Если форма содержит поле файла с атрибутом имени xxx, то соответствующее действие должно использовать три переменные элемента для инкапсуляции информации о поле файла.
Учетная переменная элемента XXX типового файла инкапсулирует содержимое файла, соответствующее полю файла.
Учетная переменная xxxfilename из строки типа инкапсулирует имя файла файла, соответствующее поле файла.
Учетная переменная xxxcontenttype из строки типа инкапсулирует тип файла файла, соответствующий полю файла.
3. Настройка struts.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype struts public "-// Apache Software Foundation // DTD Configurational 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constantAnt. value = "false"/> <constant name = "struts.devmode" value = "true"/> <name = "default" namespace = "/" extends = "struts-default"> <!-upload-> <зактивный name = "file_*" method = "{1}"> name = "page">/web-inf/jsp/fileuplaud. характеристики. Вот пример для установки типа, который позволяет загружать файлы, но программа действий не делает много обработки -> <param name = "allucttypes"> image/png, image/gif, image/jpeg </param> </action> </package> </struts>Interceptor реализует фильтрацию файлов
Struts2 предоставляет перехватчик для загрузки файлов, FileUpload. Для того, чтобы этот перехватчик работал, ссылка на перехватчик должен быть настроен в действии.
При настройке перехватчика FileUpload вы можете указать два параметра для него:
allucttypes: тип файла, разрешенный загружать, разделен несколькими типами файлов с английскими запятыми
MaximumSize: размер файла, разрешенный для загрузки, в байтах.
Когда фильтрация файла не удается, система автоматически передает в входное логическое представление, поэтому для этого действия необходимо настроить логическое представление с именем именованным входом. Кроме того, для этого действия должны быть настроены ссылка на перехватчик DefaultStack.
Файл конфигурации struts.xml выглядит следующим образом:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype struts public "-// Apache Software Foundation // DTD Configurational 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constantAnt. value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <!--File Upload--> <action name="file_*" method="{1}"> <!--Configure fileUpload interceptor and configure before defaultStack interceptor stack--> <interceptor-ref name = "fileupload"> <!-разрешенный тип файла-> <param name = "AltingTypes"> Image/PNG, Image/GIF, Image/jpeg </param> <!-Разрешено размер файла-> <param name = "maximumsize"> 2000 </param> </interceptor-ref> <!-Configure System Interceptor-> <interceptor-name = name nefce-nectecle = nefcept nefact nefact nefact nefact leclecte nefact lecmer nefactor nefactor = nefceptor nefact lecletr Страница-> <name = name = "input">/web-inf/jsp/input.jsp </result> <name = "page">/web-inf/jsp/fileupload.jsp </result> </action> </package> </struts>Настроенный выше перехватчик загрузки файла требует, чтобы тип загрузки файла мог быть только файлом изображения, а размер файла не может быть более 2000 байтов. Если загруженный файл слишком большой или тип не совпадает, он перейдет к логическому представлению ввода.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.