Пакет JAR COMMONS-FILEUPLOAD, предоставленный Apache, действительно очень прост в загрузке файлов. Недавно я должен использовать сервис/JSP для выполнения функции загрузки изображения. Я нашел много информации в Интернете, большинство из которых представлены на основе структуры стойки. Хотя некоторые из них также вводят загрузку общей загрузки, эти примеры относительно старые, а некоторые категории теперь отброшены.
Благодаря исследованиям и исследованиям исследования функция загрузки была окончательно завершена. Позвольте мне поделиться этим с вами ниже.
Сценарии
Интерфейс управления библиотекой необходимо обеспечить функцию загрузки книжных картин и, наконец, отображать его на странице.
Осознайте эффект
Введите страницу добавления книги, и изображение по умолчанию отображается «Нет прорыва» (пока нет »(как длина, так и ширина - 200 пикселей), и кнопка предоставляется для« загрузки изображения », как показано на следующем изображении.
Нажмите кнопку «Загрузить изображение», и интерфейс загрузки появляется через окно режима, как показано на рисунке ниже.
Выберите указанное изображение через кнопку «Обзор», нажмите кнопку «Загрузить», чтобы загрузить. Если загрузка будет успешной, появится успешная подсказка. После того, как пользователь нажимает «ОК», закрывает всплывающее окно и автоматически отображает новое изображение на странице, как показано на рисунке ниже.
Реализация кода
① Первый создание книги «Добавить страницу: bookadd.jsp
Скрытый тег с идентификатором страницы Photo_ID используется для хранения пути изображения, который удобен для подчинения на фоне и хранится в базе данных, а тег <img> с идентификатором IMG_ID используется для отображения изображений. Все картинки хранятся под сервером для легкого чтения. Затем, ключ JS, нажмите кнопку, чтобы вспять страницу загрузки через окно режима. Когда окно режима появляется, определяется переменная победа, которая используется для получения значения пути изображения, передаваемого обратно в окно режима.
(Примечание. Из -за проблем безопасности изображения не могут быть сохранены по желанию. Если проект развернут на сервере, изображения могут быть просмотрены только при сервере. Если вам необходимо прочитать изображения, которые не находятся под текущим сервером, вам необходимо настроить виртуальный каталог сервера)
<html> <Head> <title> Добавить книгу </title> <script type = "text/javascript"> // Открыть функцию страницы загрузки openupload () {var win = window.showmodaldialog ("<%= root%>/admin/bookupload.jsp", "," dialogwidth: 300px; dialogheight: 300ps; if (win! = null) {document.getElementById ("photo_id"). value = win; document.getElementbyId ("img_id"). src = "<%= root%>/"+win; }} </script> </head> <body> <h5> Добавить книгу </h5> <hr/> <p> обложка книги: <label> <input type = "hidden" id = "photo_id" name = "photo" value = "Images/noimg.png"> <input = "onclick =" openupload () "value =" umpload "/> <impload" onclick = "openupload ()" valued value ". id = "img_id" src = "<%= root%>/images/noimg.png"> </label> </body> </html> ②create Загрузить страницу изображения, bookupload.jsp
Обратите внимание, что вы должны определить тег <base>. Данные могут быть возвращены в родительскую форму, когда окно текущего режима закрыта. Тэг <Form> также должен установить свойство ectype = "Multipart/Form-Data", чтобы приведенные файлы можно было получить на фоне. Нажмите кнопку «Загрузить», чтобы передавать файлы на фоновый режим. Оставшееся выделение - это обработка загрузки фоновой загрузки.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <meta http-equiv="pragma" content="no-cache" /> <span style="color: #ff0000;"><base target="_self"></span> <title>Book picture upload</title> </head> <body> <h5> upload </h5> <hr/> <p style = "color: red"> $ {requestScope.errormsg} </p> <form id = "form1" name = "form1" action = "<%= root%>/bookservlet? type = bookpload" method = "ectype =" multipart/form-data? 3m! </Div> <div> <input type = "file" name = "file_upload"/> </div> <div> <input type = "pospod" value = "upload"/> </div> </form> </body> </html> ③create Обычный сервлет, приведены только некоторые из ключевых кодов.
Красный кодовый код является загруженным кодом ключа, а другие используются в качестве украшений. Завершите эти три шага, и будет достигнута простая загрузка.
Public Class Bookservlet расширяет httpservlet {private string uploadpath = "eshop/upload/"; // каталог для загрузки файлов private String temppath = "eshop/uploadtmp/"; // временный каталог файлов private String ServerPath = null; private int sizemax = 3; // Максимальный верхний предел изображения Private String [] fileType = new String [] {". JPG", ". GIF", ". BMP", ". Png", ". JPEG", ". ICO"}; public void Doget (httpservlectrequest, httpservletresponse response) Throws ServletException, ioException {serverPath = getServletContext (). getRealPath ("/"). Заменить ("//", "/"); // Выполнить, когда сервлет инициализируется. Если загруженный каталог файлов не существует, он автоматически создаст if (! New File (ServerPath+uploadPath) .isDirectory ()) {новый файл (ServerPath+uploadPath) .mkdirs (); } if (! new File (ServerPath+temppath) .isdirectory ()) {new File (serverPath+temppath) .mkdirs (); } <span style = "color: #ff0000;"> diskfileitemfactory factory = new DiskFileItemFactory (); </span> factory.setsizeThroshold (5*1024); //Maximum cache factory.setRepository(new File(serverPath+tempPath));//Temporary file directory <span style="color: #ff0000;">ServletFileUpload upload = new ServletFileUpload(factory);</span> upload.setSizeMax(sizeMax*1024*1024);//Maximum upper limit of file String filePath = null; try {<span style = "color: #ff0000;"> list <fieleItem> items = upload.parserequest (request); </span> // Получить все файлы списка для (файл файла: элементы) {// Получить имя файла. item.getName (). tolowercase (); if (filename.endswith (filetype [0]) || filename.endswith (filetype [1]) || filename.endswith (filetype [2]) || filename.endswith (fileType [3]) || fileName.Endswith (fileType [4]) Uuid.randomuuid (). Tostring (); filePath = serverPath+uploadPath+uuid+filename.substring (filename.lastIndexof (".")); <span style = "color: #ff0000;"> item.write (новый файл (filepath)); </span> printwriter pw = response.getWriter (); pw.write ("<script> alert ('загруженное успешно'); window.returnValue = '"+uploadpath+uuid+filename.substring (filename.lastindexof ("."))+"'; window.close (); </script>"); pw.flush (); pw.close (); } else {request.setattribute ("errormsg", "Загрузка не удалась, подтвердите, что загруженный файл существует и является изображением!"); request.getRequestDispatcher ("/admin/bookupload.jsp"). }}}} catch (Exception e) {e.printstacktrace (); request.setAttribute ("errormsg", "upload fake, подтвердите, что загруженный размер файла не может превышать"+sizemax+"m"); request.getRequestDispatcher ("/admin/bookupload.jsp"). }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.