Первая - это часть веб -страницы, upload_file.jsp
<%@ page language = "java" image = "java.util.*" pageencoding = "utf-8"%> <! > <form action = "uploadfile" method = "post" ectype = "multipart /form-data"> <!-файл domain-> <input type = "file" name = "source" /< /> input type = " Отправить "value =" upload "> </form> </body> </html>
Для формы загрузки файла, Metho должен быть установлен для публикации, и Enctype должен быть установлен в Multipart/Form-Data.
Из приведенного выше кода вы можете видеть, что эта форма представлена в файл upload, это действие для его обработки.
<name Action = "uploadfile"> <name = "name =" успех ">/uploadresult.jsp </result> <!-FileUploAding, которые можно использовать для ограничения типа и размера документа документов загрузки-> <internetor- name name = "FileUpload"> <!-Ограничьте размер файла 20m, единица Byte-> <sem name = "maximumSize"> 20971520 </param> </receptor-ref> <!-перехватчик по умолчанию должен быть объявлен I.
Fileupload Interceptor используется для настройки путей загрузки для ограничения типов и размеров файлов.
Что касается размера файла, невозможно иметь <param name = "maximumSize" >> Вы должны добавить его в рамках тега <Struts>
<constant name = "struts.multipart.maxsize" value = "21000000"/>/>
Эта строка кода указывает на максимальный размер размера файла, разрешенного для загрузки файлов во всем проекте, то есть любой размер отдельного файла, загруженный в этом проекте, не может превышать 21000000 байтов (около 20 м). Файл, который может быть загружен по умолчанию, составляет 2M, так что это также метод, который разрушает ограничения 2M -файлов, которые могут загружать только 2M -файлы.
Что касается типа файла, если вам нужно ограничить его как файл изображения, вы можете настроить его так
<!-Установите только загрузку файла изображения-> <rececpent-ref name = "fileupload"> <posm name = "AltingTypes"> Image/bmp, image/x-png, image/gif, image/jpeg < /< /Param> < /retercepter-ref> <receptor-ref name = "defaultstack" /> />
Значение в метке состоит в том, что значением файла является тип MIME, а тип MIME общего файла можно найти в%tomcat_home%/conf/web.xml.
Если вы хотите быть ограниченным файлом Word, вы можете <terecedor>
<!-Урегулирование только позволяет загрузить документ Word-> <rececpent-ref name = "fileupload"> <sem name = "AlltyPes"> Application/msword, Application/vnd.openxmlformats-Offic edocument.wordProcessingMl.document </param> < /retercepter-ref> <receptor-ref name = "defaultstack" />
Тем не менее, я чувствую, что для ограничения типа файла лучше использовать JavaScript для реализации ограничений на переднем крае.
Далее, напишите загрузку, необходимыми частными атрибутами, необходимыми для загрузки, являются источником, который согласуется с атрибутом имени файлового домена в upload_file.js p, то есть значение свойства имени файло Кроме того, есть еще два важных частных атрибута:
Private String SourceFilename;
Приватная строка SourcecontentType;
Таким образом, то есть, например, name = "ABC" китайского поля домена в upload_file.jsp, тогда это необходимо определить в действии
Частный файл ABC;
ABC автоматически получит загруженную объект файла, ABCFILENAME автоматически получает имя файла, а ABCContetType автоматически получает тип файла.
Я должен сосредоточиться на загрузке путей.
Если он загружен на абсолютный путь, это довольно хорошо, но если вы хотите загрузить в папку загрузки в каталоге Project Root, как получить полный путь этой папки загрузки?
Я пытался использовать
ServletActionContext.getServletContext ().
Но вернулся ноль. Также используется
ServletActionContext.getRequest ().
Все еще вернулся в NULL. Но проверяя эту проблему в Интернете, многие люди рекомендуют это письмо, доказывая, что это может быть осуществимым в некоторых случаях, но есть люди, которые возвращаются в NULL, как я. Интерфейс ServiceContextare. Конкретный метод заключается в следующем:
Общедоступный класс Extends Decietsupport ImvletContextare { / ** * Пропустить другой код ... * / Prive ServletContext; Void setServletContext (контекст ServletContext) {this.context = context;}}
Затем используйте
String path = context.getRealPath ("/upload");
Получите путь папки загрузки. Затем выполните загрузку:
/*Загрузить файл в папку upload*/file saveful = new File (path, sourcefilename);
Я лично рекомендую этот метод, потому что этот метод, кажется, избегает правильного пути, когда проект упакован и перенесен в другие среды.
Вставьте полный код загрузки в заднюю загрузку. Java
Пакет Com.lidi.Action; Загрузка Class Extends Достоверно Тип типа файла типа Private ServletContext; / Public file getSource () {return Source;} public void setSource (File Source) {this.source = source; String getSourceContentType () {return sourceContentType;} public voidth e (string sourcecontenttype) {this.sourcontenttype = sourceContentType;} @Override public void setServletContext (ServicetContext invetex {this .context = context; xecture *Получите путь к файлу загрузки: Project Root Directore Poent*/String Path; Папка* / savefile = новый файл (Path, SourceFilenAme);
Загрузить страницу результатов uploadresult.jsp
<%@ page language = "java" image = "java.util.*" pageencoding = "utf-8"%> <%@ taglib uri = "/struts-tags" prefix = "s"%> <! Doctype html> <html> <head> <title> Result Result </title> </head> <body> <p> Имя файла: <S: значение свойства = "SourceFilename"/> </p> <p> Файл Тип: <S: значение свойства = "sourcecontenttype" /> < /p> <p> Файл: <a href = "upload /<s: value =" sourcefilename " /"> <s: Property = "LeName" Sourcefi LeName " /> </a> </p> </body> </html>
Выше всего содержимое этой статьи.