В этой статье используется конкретный код реализации для загрузки и загрузки файлов Struts2 для вашей ссылки. Конкретный контент заключается в следующем
1. Загрузка файла
Загрузите компонент файла, представленную стойкой,
Столь регистрации:
1) Стоимость представления
2) Тип формы Multipart/Form-Data
3) Тип ввода = файл
За кулисами:
Компонент FileUpload предоставлен Apache
Основная категория:
Fileitemfactory FileItem Factory
ServletFileUpload Core Class для загрузки файлов в сервлете
FileItem инкапсулирует информацию о загруженных элементах файлов формы. Короче говоря, загрузка файла является более хлопотной для обработки.
Struts 'upload <br /> upload interceptor помогает нам поздней функции загрузки файла
<inemector name = "fileupload"/>
upload.xml
<struts> <name пакета = "upload_" extends = "struts-default"> <!-Примечание: ключевое слово «fileupload» не может использоваться с ключевым словом «FileUpload»-> <name = "fileUploadAction"> <!-RESTICT TIPES загруженных файлов-> <retemceptor-name = "DefaultStack"> <! name = "fileupload.allowedextensions"> txt, jpg, jar </param> <!-ограничить типы, используемые [используемые в то же время, что и выше, получить интерсекцию] <param name = "fileupload.allowedtypes"> text/rain </param>-> </receptor-ref> <sultypes = "успех"/e/e/e/exurse. name = "input">/e/error.jsp </result> </action> </package> </struts>
upload.jsp
<body> <form action="${pageContext.request.contextPath }/fileUploadAction" method="post" enctype="multipart/form-data"> Username:<input type="text" name="userName"><br/> File:<input type="file" name="file1"><br/> <input type="submit" value="upload"> </form> </body>error.jsp
<body> error.jsp <br/> <!-Просмотреть все сообщения об ошибках, сгенерированные структурой стойки во время выполнения-> < %@ taglib uri = "/struts-tags" prefix = "s" %> <s: fielderror> </s: fielderror> </body> success.jsp <body> ucsust.jsp </body> body> body> body>
Основной код
FileUpload .class
public class fileupload extends actionsupport {// Соответствующая форма: <input type = "file" name = "file1"> private file file1; // Имя файла Private String File1filEname; // Тип файла (MIME) Private String File1ContentType; public void setFile1 (file file1) {this.file1 = file1; } public void setFile1filEname (string file1filename) {this.file1filename = file1filename; } public void setFile1ContentType (string file1contentType) {this.file1contentType = file1contentType; } @Override public String execute () throws exception {/********* Получить загруженный файл и обработать его ******* // // Загрузить файл в каталог загрузки // Получить загруженный путь пути каталога = servletactOntext.getServletContext (). GetRealpath ("/upload"); // Создать целевой файл объекта файла destfile = new File (path, file1filename); // Скопировать загруженный файл в Target fileUtils.copyfile (file1, destfile); вернуть успех; }} Загрузка файла сведения о обработке
а Предел размера файла
Максимальная загрузка файла, поддерживаемая структурой, по умолчанию 2M, и изменяется константами:
<!-4. Измените максимальный размер загруженных файлов до 30 м->
<constant name = "struts.multipart.maxsize" value = "31457280"/>
беременный Ограничение допустимого типа загруженных файлов: разрешены только перехватчики файлов с суффиксами TXT/JPG: параметры для ограничения для ограничения типов загрузки файлов
<!-ограничить тип загруженного файла-> <receptor-ref name = "defaultstack"> <!-ограничить расширение работы файла-> <param name = "fileupload.allowedextensions"> txt, jpg, jar </param> <! name = "fileupload.allowedTypes"> text/plain </param>-> </receptor-ref>
2. Загрузите файл
Скачать файл стойки, 2 способа:
Метод 1: Напишите данные потока байтов в браузер через объект ответа; Установите метод заголовка ответа для загрузки 2: метод стойки
Загрузите файл Struts:
Скопируйте код следующим образом: <name-type name = "stream"/>
Во -первых, обратите внимание, что вы создаете новую папку загрузки в каталоге WebRoot и разместите файл, который вы хотите предоставить в загруженную папку.
upload.xml
<name = "down_*" method = "{1}"> <!-Список Display-> <name = "list">/e/list.jsp </result> <!-операция загрузки-> <name = "скачать" type = "stream"> <!-Тип файла. the property of the stream [actually getAttrInputStream()] --> <param name="inputName">attrInputStream</param> <!-- The download header, including: the file name displayed by the browser--> <param name="contentDisposition">attachment;filename=${downFileName}</param> <!-- Buffer Size Setting--> <param name="bufferSize">1024</param> </result> </action>List.jsp
<body> <table align = "center"> <tr> <td> number </td> <td> имя файла </td> <td> операция </td> </td> < %@tglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> <c: foreace varemame " items = "$ {filenames}" varstatus = "vs"> <tr> <td> $ {vs.count} </td> <td> $ {filename} </td> <td> <!-Построить URL-> <c: url var = "url" value = "down_dow value = "$ {filename}"> </c: param> </c: url> <a href = "$ {url}"> Скачать </a> </td> </tr> </c: foreach> </table> </body>Вниз
/***Загрузить файл*1. Показать список всех файлов, которые будут загружены*2. Загрузка файла** /public Class DownloadAct Показать список всех файлов, которые будут загружены **************************/Public String List () Throws Exception {// Получить путь к пути каталога загрузки = ServletactOntext.getServletContext (). GetRealPath ("/upload"); // файл объекта каталога файл = новый файл (path); // Получить имя файла всех файлов для загрузки string [] filenames = file.list (); // Сохранить actionContext ac = actionContext.getContext (); // Получить карту, представляющую запрос (второй способ) map <string, object> request = (map <string, object>) ac.get ("request"); request.put ("имена файлов", имена файлов); вернуть "список"; } /****************** 2. Скачать файл ****************************/ // 1. Получить имя файла файла, чтобы загрузить частное имя строки; public void setFilEname (String FileName) {// Обработка задачи в пропущенных параметрах (Get Reading) try {fileName = new String (fileName.getBytes ("iso8859-1"), "utf-8"); } catch (unsupportEncodingexception e) {бросить новое runtimeexception (e); } // Присвоение this.filename = filename; } // 2. Загрузите представленный бизнес -метод (настройка потока в struts.xml) public String Down () Throws Exception {return "Загрузить"; } // 3. Методы возврата потока файла public inputstream getAttrinputStream () {return servletactionContext.getServletContext (). GetResourCeasStream ("/upload/" + filename); } // 4. Загрузите отображаемое имя файла (имя файла, отображаемое браузером) public String getDownFilename () {// китайское кодирование требуется try {fileName = urlencoder.encode (fileName, "UTF-8"); } catch (unsupportEncodingexception e) {бросить новое runtimeexception (e); } вернуть имя файла; }}Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.