Примеры в этой статье делятся загрузкой файла и загрузки кода реализации Java для вашей ссылки. Конкретный контент заключается в следующем
Столь регистрации:
1. Метод подачи: post
2. В форме есть элементы загруженной формы файла: <input type = "file" />
3. Укажите тип формы:
Тип по умолчанию: ectype = "application/x-www-form-urlencoded"
Тип загрузки файла: Multipart/Form-Data
FileUpload
Он обычно используется в разработке функции загрузки файлов, а Apache также предоставляет компоненты загрузки файлов!
Компонент FileUpload:
1. Загрузите исходный код
2. Представьте файлы JAR в проекте
Commons-FileUpload-1.2.1.jar [Компонент Core Compount Core Corme Componte Componte Package]
Commons-IO-1.4.jar [Классы инструментов, связанные с вышивкой для обработки файлов]
использовать:
открытый класс uploadservlet extends httpservlet {// upload reciletor factory = new DiskFileItemFactory (); // 2. Создание загрузки файла Core Class Class ServletFileUpload upload = new ServletFileUpload (Factory); // 1. Установите максимальный размер, допустимый для одного файла: 30M upload.setFileSizeMax (30*1024*1024); // 2. Установите общий размер, разрешенный для формы загрузки файла: 80 м opload.setsizemax (80*1024*1024); // 3. Установите кодирование имени файла формы загрузки // эквивалентное: request.setcharacterencoding ("UTF-8"); upload.setheaderencoding ("UTF-8"); // 3. Определите: является ли текущая форма формой загрузки файла if (upload.ismultipartContent (request)) {// 4. Конвертировать запрошенные данные в объекты FileItem, а затем инкапсулировать список <fieTiTem> = upload.parseRequest (request); // Traversal: Получите каждое загруженное данные для (FileItem Item: List) {// Судьба: нормальные текстовые данные if (item.isformfield ()) {// нормальные текстовые данные строки fieldname = item.getfieldname (); // Имя элемента формы string content = item.getString (); // Имя элемента формы, соответствующие данные //item.getstring("utf-8 "); Укажите систему кодирования.out.println (FieldName + "" + Content); } // upload file (file stream) ---> загрузить в каталог загрузки else {// нормальные текстовые данные строки fieldname = item.getfieldname (); // Имя элемента формы string name = item.getName (); // Имя файла string content = item.getString (); // Имя элемента формы, соответствующая строка данных type = item.getContentType (); // Тип файла inputStream in = item.getInputStream (); // Загрузка потока файла/** 4. Имя файла переименование* Для разных пользователей readme.txt файлы не хочу быть перезаписанным! * Фоновая обработка: добавьте уникальный тег в пользователь! */ // а. Случайным образом генерировать уникальный идентификатор строки тега = uuid.randomuuid (). ToString (); // б. Имя сплайса с именем файла = id + "#" + name; // Получить загрузку базового пути String Path = getServletContext (). GetRealPath ("/upload"); // Создать файл файла целевого файла = новый файл (path, name); // класс инструментов, item загрузки файла.write (file); item.delete (); // Удалить временный файл, сгенерированный System System.out.println (); }}} else {System.out.println ("Текущая форма не является формой загрузки файла, обработка не удалась!"); }} catch (Exception e) {e.printstackTrace (); }} // Ручная реализация процесса частной загрузки void (httpservletrequest) бросает ioexception, unsupportedencodingexception { /* request.getParameter (""); // get/post request.getQueryString (); // Получить данные, представленные get request.getInputStream (); // Получите данные, представленные Post*//******************** Получить форму потока данных Form InputStream in = request.getInputStream (); // 2. Преобразовать потоковой inputStreamReader inStream = new InputStreamReader (in, "UTF-8"); // 3. BufferedReader Reader = New BufferedReader (inStream); // Выходные данные String Str = null; while ((str = reader.readline ())! = null) {System.out.println (str); } // Выходная строка данных str = null; while ((str = reader.readline ())! = null) {System.out.println (str); } // закрыть reader.close (); instream.close (); in.close (); } public void Dopost (httpservletRequest, httpservletresponse response) throws servletexception, ioexception {this.doget (запрос, ответ); }}Случай:
Index.jsp
<body> <a href = "$ {pagecontext.request.contextpath}/upload.jsp"> upload file </a> <a href = "$ {pagecontext.request.contextPath}/fileservlet?Upload.jsp
<body> <form name = "frm_test" action = "$ {pagecontext.request.contextpath}/fileservlet? Method = upload" method = "post" ectype = "multipart/form-data"> <%-<input type = "hidden" name = "method" value = "upload">-%> USERNAM <input type = "file" name = "file_img"> <br/> <input type = "Отправить" value = "opper"> </form> </body>Fileservlet.java
/** * обрабатывать загрузку и загрузку файлов * @author jie.yuan * */public class fileservlet extends httpservlet {public void doget (httpservlectrequest, httpservletresponse response) thripting revletexception, ioException {// get wreasd parameters: различие в различных типах операции. if ("upload" .equals (method)) {// загрузить загрузку (запрос, ответ); } else if ("downlist" .equals (method)) {// введите список загрузки downlist (запрос, ответ); } else if ("down" .equals (method)) {// Загрузить вниз (запрос, ответ); }} / ** * 1. Upload * / private void upload (httpservlectrequest, httpservletresponse ответ) Throws servletexception, ioexception {try {// 1. Создание объекта FileItemfortory factory = new DiskFileTemFactory (); // 2. Загрузка файла Core Class Class Class -FileUpload upload = new ServletFileUpload (Factory); // Установить параметры ограничения размера upload.setFilesizeMax (10*1024*1024); // Ограничение размера единого файла upload.setsizemax (50*1024*1024); // общий размер файла Limit upload.setheAderencoding ("UTF-8"); // Обработка кодирования китайского файла // Судья if (upload.ismultipartContent (request)) {// 3. Преобразование данных запроса в список сбора списков <FieleItem> list = upload.parseRequest (request); // Traversal for (fileitem item: list) {// Суждение: нормальные текстовые данные if (item.isformfield ()) {// Получить имя string name = item.getfieldname (); // Получить значение string value = item.getString (); System.out.println (значение); } // элемент формы файла else { / ************ Загрузка файла *************** / // a. Получить имя файла string name = item.getName (); // --- Обработка проблемы загрузки имени файла дубликат Имя ---- // A1. Получить уникальную марку String id = uuid.randomuuid (). ToString (); // a2. Имя файла сплайсинга имя = id + "#" + name; // б. Получить строку каталога загрузки BasePath = getServletContext (). GetRealPath ("/upload"); // c. Создать объект файла для загрузки файла файла = новый файл (BasePath, name); // d. Загрузить item.write (file); item.delete (); // Удалить временный файл, сгенерированный при запуске компонента}}}}} catch (Exception e) {e.printstackTrace (); }} / *** 2. Введите список загрузки* / private void downlist (httpservlectrequest, httpservletresponse response) throws servletexception, ioexception {// Идея реализации: сначала получите имена файлов всех файлов в каталоге загрузки и затем сохранить; Прыгните в список down.jsp, чтобы отобразить // 1. Инициализировать карту карты карты <Имя файла, содержащее уникальные теги, короткое имя файла>; Map <string, string> filenames = new hashmap <string, string> (); // 2. Получите каталог загрузки и имена файлов всех файлов под string bathpath = getservletcontext (). GetRealpath ("/upload"); // файл каталогов файл = новый файл (bathpath); // В каталоге все имена файлов Список строки [] = file.list (); // Traversal, инкапсулировать if (list! = Null && list.length> 0) {for (int i = 0; i <list.length; i ++) {// полное имя строки fileName = list [i]; // короткое имя string shortName = filename.substring (fileName.lastIndexof ("#")+1); // инкапсулировать файлы. }} // 3. Сохранить в запросе request.seeptatribute ("filenames", filenames); // 4. } / *** 3. Обработка загрузки* / private void down (httpservlectrequest, httpservletresponse response) Throws servletexception, ioexception {// Получить имя файла, загруженное пользователем (добавление данных после URL -адреса, get) string filemame = request.getParameter ("fileName"); fileName = new String (fileName.getBytes ("iso8859-1"), "UTF-8"); // Получить путь к каталогу загрузки String BasePath = getServletContext (). GetRealPath ("/upload"); // Получение потока файла inputstream в = new FileInputStream (новый файл (BasePath, Filename)); // Если имя файла является китайским, необходимо выполнить кодирование URL = urlencoder.encode (имя файла, "UTF-8"); // Установите заголовок ответа для загрузки response.setheader ("Контент-дискуссия", "Attachment; filename =" + filename); // Получить ответ Byte Stream outputStream Out = response.getOutputStream (); байт [] b = новый байт [1024]; int len = -1; while ((len = in.read (b))! = -1) {out.write (b, 0, len); } // close Out.close (); in.close (); } public void Dopost (httpservletRequest, httpservletresponse response) throws servletexception, ioexception {this.doget (запрос, ответ); }}Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.