Загрузка и загрузка файла
Столь регистрации:
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 Class verletFileUpload upload = new ServletFileUpload (Factory); // 1. Установите максимальный размер, допустимый для одного файла: 30mupload.setFilesezemax (30*1024*1024); // 2. Установите общий размер. 80mupload.setsizemax (80*1024*1024); // 3. Установите кодирование имени файла формы загрузки // эквивалентное: request.setcharacterencoding ("utf-8"); upload.setheaderencoding ("utf-8"); // 3. Определить: является ли текущая форма формой загрузки файла if (upload.ismultipartcontent (request)) {// 4. Конвертируется запрошенные данные в объекты FileItem, а затем incapled list <fieTem> list = upload.parsequest (запрос); Список) {// Суждение: нормальные текстовые данные if (item.isformfield ()) {// нормальная текстовая строка данных FieldName = item.getFieldName (); // Имя элемента формы string content = item.getString (); // Имя элемента формы, соответствующие данные //item.getstring("utf-8 "); Укажите систему кодирования. // Имя элемента формы string name = item.getName (); // Имя файла string content = item.getString (); // Имя элемента формы, соответствующая строка данных type = item.getContentType (); // Тип файла inputStream in = item.getInputStream (); // Загрузка потока файла/** 4. Имя файла Переименование* Для разных пользователей файлов readme.txt не хочу быть перезаписанным! * Фоновая обработка: добавьте уникальный тег пользователю!* /// a. Случайно генерируйте уникальный идентификатор строки тега = uuid.randomuuid (). ToString (); // b. Имя сплайсинга с помощью файла name = id + "#" + name; // Получить загрузку базового пути path path = getservletcontext (). GetRealpath ("/upload"); // Создать файл целевого файла = новый файл (path, name); // класс инструментов, файл item.write (файл); Item.delete (); // Удалить временный файл, сгенерированный системой system.out.println ();}}} else {System.out.println («Текущая форма не является формой загрузки файла, обработка не удалась!»);}} Catch (Exception E) {e.printstackTrace ();}} // Манчонная реализация процесса private void upload upload upload (httts weploard wepload wails wepload wepload weplace (); IoException, unsupportEncodingException {/*Request.getParameter (""); // get/postrequest.getQueryString (); // Получить данные, представленные get request.getInputStream (); // Получить данные, представленные POST*// ******************** Получите поток данных Form Data InputStream in = request.getInputStream (); // 2. Преобразовать потоковой inputstreamReader instream = new InputStreamReader (in, "UTF-8"); // 3. BufferedReader Reader = new BufferedReader (instream); // Строка вывода данных str = null; while ((str = reader.readline ())! = Null) {System.out.println (str);} // close reader.close (); Ответ) бросает 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 = "pospent"> </form> </body>Fileservlet.java
/*** Загрузка и загрузку файлов процесса*@author jie.yuan **/public class fileservlet extends httpservlet {public void Doget (httpservlectrequest, httpservletresponse response) thripting revletexception, ioException {// get Quest Parameters: различие различных типов операций method string method = request.getparameter (method.getheparametsparameter (method.gethepparametsparametsparameter. ("upload" .equals (method)) {// загружать загрузку (запрос, ответ);} else if ("downlist" .equals (method)) {// ввод списка загрузки downlist (запрос, ответ);} else if ("down". HttpServletResponse response)throws ServletException, IOException {try {// 1. Create factory object FileItemFactory factory = new DiskFileItemFactory();// 2. File upload core tool class ServletFileUpload upload = new ServletFileUpload(factory);// Set size limit parameters 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 для (fileitem item: list) {// суждение: нормальные текстовые данные, если (item.isfield ()) {/ electe name ntrd name) String value = item.getString (); System.out.println (value);} // элемент формы файла else {/************ Загрузка файла **************** /// A. Получить имя файла string name = item.getName (); // --- Обработайте проблему загрузки имени файла duplicate --- // a1. Получите уникальную марку String id = uuid.randomuuid (). ToString (); // a2. Имя файла сплайсинга имя = id + "#" + name; // б. Получить строку каталога загрузки BasePath = getServletContext (). GetRealPath ("/upload"); // c. Создайте объект файла для загрузки файла файла = новый файл (basePath, name); // d. Загрузить item.write (file); item.delete (); // Delete the temporary file generated when the component is running}}}}} catch (Exception e) {e.printStackTrace();}}/*** 2. Enter the download list */private void downList(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// Implementation idea: first get the file names of all files in the upload каталог, а затем сохранить; Прыгните в список down.jsp, чтобы отобразить // 1. Инициализировать карту карты карты <Имя файла, содержащее уникальные теги, короткое имя файла>; map <string, string> filenames = new hashmap <string, string> (); // 2. Получите каталог загрузки и имена файлов всех файлов под string bathpath = getservletcontext (). GetRealpath ("/upload"); // файл каталогов файл = новый файл (bathpath); // в каталоге все имена файлов string string. i ++) {// Полное имя строки fileName = list [i]; // короткое имя string shortname = filename.substring (filename.lastidexof ("#")+1); // incapsulate filename.put (filename, worlename);}} // 3. save to aeffer request.selettribute.settribute ("fillename);} // 3. save to chestrytatrule (" filename "// 3. request.getRequestDispatcher ("/downlist.jsp"). Worth (repred, ответ);}/*** 3. Обработка загрузки*/private void down (httpservlectrequest, httpservletrespons request.getParameter ("filename"); filename = new String (fileName.getBytes ("isO8859-1"), "utf-8"); // Получить путь пути каталога upload basepath = getservletcontext (). getRealpath ("/upload"); // Получить потоковой stream-in = new fileInpream ("/upload"); // или stream-потоко Имя файла является китайским, URL-кодирование необходимо выполнить fileName = urlencoder.encode (имя файла, «UTF-8»); // Установить заголовок ответа для загрузки. Setheader («Content-Disposition», «Приложение; FileName =" + fileName); // get-byte-stream-stream outstream = get-getOutputStream (); = -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 (запрос, ответ);}}Разработка почты
Подготовка работы, строительство окружающей среды:
1. Создайте почтовый сервер локально
EasyMail Server, eyoumailserversetup.exe
2. Создать новую учетную запись электронной почты
Чжан Сан отправил электронное письмо Ли Си.
Шаг 1:
Создайте новое доменное имя: Инструменты, настройки сервера, введите itcast.com в поле с одним доменным именем
Шаг 2:
Создать новую учетную запись электронной почты: [email protected]
3. Установите Foxmail
Настройте сервер отправки электронной почты (SMTP): Localhost 25
Сервер по электронной почте (POP3): Localhost 110
Создайте новую учетную запись, и вы можете получить электронные письма!
Уведомление
Уведомление
Если это веб -проект, потому что Javaee поставляется с функцией электронной почты, могут быть проблемы!
Нам нужно использовать нашу собственную функцию файла mail.jar! Вам нужно удалить почтовый пакет в Javaee!
использовать:
Для разработки Javamail сначала введите файлы JAR:
active.jar [если вы используете jdk1.6 или выше, вы не можете использовать этот файл jar] mail.jar [Отправить основной пакет по электронной почте]/*** 1. Отправить обычную электронную почту*@author jie.yuan **/public class app_sendmail {@testpublic void testsend () Throws Exception {// 0. Свойства почтовых параметров prop = new Properties (); prop.put ("mail.transport.protocol", "smtp"); // Укажите протокол prop.put ("mail.smtp.host", "localhost"); // Хост stmp.qq.comprop.put ("mail.smtp.port", 25); // порт prop.put ("mail.smtp.auth", "true"); // Аутентификация пароля пользователя prop.put ("mail.debug", "true"); // Режим отладки // 1. Создать сеанс сеанса почты = session.getDefaultInstance (prop); // 2. Создайте объект почты (целый объект электронной почты) Mimemessage Message = new Mimemessage (Session); // 3. Установите параметры Body Mail: //3.1. InternetAddress ("[email protected]")); // 3.5 Content Message.settext ("Привет, он был успешно отправлен! Текст ..."); // Простая простая текстовая электронная почта. // Сохранить электронную почту (необязательно) // 4. Отправить транспорт Transfer = session.getTransport (); Trans.Connect ("Zhangsan", "888"); // отправить почту в Trans.SendMessage (Message, message.getAllRecipients ()); Trans.Close ();}}С картинками
/*** Электронная почта с ресурсами изображений*@author jie.yuan **/public class app_2sendwithimg {// Параметры инициализации частные статические свойства prop; // отправитель частного статического интернет -аддресса sendman = null; static {smtp = new Properties (); prop.put ("mail.transport.protocol", "smtp"); // Укажите протокол prop.put ("mail.smtp.host", "localhost"); // Хост stmp.qq.comprop.put ("mail.smtp.port", 25); // укажите протокол prop.put ("mail.smtp.port", 25); // Укажите протокол prop.put ("mail.smtp.port", "localhost"); // Хост stmp.qq.comprop.put ("mail.smtp.port", 25); // порт prop.put ("mail.smtp.auth", "true"); // Аутентификация пароля пользователя prop.put ("mail.debug", "true"); // Режим отладки try {sendman = new InternetAddress ("[email protected]");} catch (addressexception e) {throw new runtimeexception (e);}}@testpublic void testsend () throws exection {// 1. Создание сеанса сеанса почты = сеанс. Mimemessage (Session); // 3. Установите параметры: заголовок, отправитель, получатель, время отправки, контент. Message.setsender (Sendman); message.setRecipient (receienttype.to, new InternetAddress ("[email protected]")); message.setsentdate (new Date ());/************************** Установите Содержание электронной почты: Многофункциональный пользовательский электронный адрес (связанный) ************************ /// 4.1 Создание многофункционального блока электронной почты MiMemultipart insulity = new MiMemultipart ("insulity"); //. MimeBodyPart (); MimeBodyPart resource = new MimeBodyPart (); // Установить конкретный контент: a. Resource (picture) string filePath = app_2sendwithimg.class.getResource ("8.jpg"). GetPath (); dataSource ds = new FileDataSource (новый файл (filePath)); DataHandler Handler = new DataHandler (ds); resource.setDataHandler (handler); // Установите имя ресурса и ссылка на внешний ключ // Установите конкретный контент: b. Text Content.SetContent («<img src = 'cid: 8.jpg'/> ok!», «Text/html; charset = utf-8"); связанный. AddBodyPart (Content); Advice.Addybodypart (ресурс);/******* 4.3. Добавить комплексные электронные письма в электронные письма *******/Сообщение .se.set. session.gettransport (); rans.connect ("Zhangsan", "888"); Trans.SendMessage (message, message.getallRecipents ()); trans.close ();}}Картинки + вложения
/*** 3. Электронная почта с ресурсами и вложениями изображения*@author jie.yuan **/public class app_3imgandatta {// Параметры инициализации частные статические свойства prop; // Отправитель частного статического интернет -адреса sendman = null; static {rop = new Properties (); prop.put (mail.transport.protocol {smtpepies (); prop.put (mail.pransport. // Укажите протокол prop.put ("mail.smtp.host", "localhost"); // Хост stmp.qq.comprop.put ("mail.smtp.port", 25); // порт prop.put ("mail.smtp.auth", "true"); // Аутентификация пароля пользователя prop.put ("mail.debug", "true"); // Режим отладки try {sendman = new InternetAddress ("[email protected]");} catch (addressexception e) {throw new runtimeexception (e);}}@testpublic void testsend () throws exection {// 1. Создание сеанса сеанса почты = сеанс. Mimemessage (Session); // 3. Установите параметры: заголовок, отправитель, получатель, время отправки, контент message.setsubject ("mail with picture"); Message.setsender (Sendman); message.setRecipient (receienttype.to, new InternetAddress ("[email protected]")); message.setsentDate (new Date ());/** Разработка почты с приложением (изображение)*/// Создание общего почтового блока miMemultipart mixed = new miMemultipart ("mixed"); // -> Общая почта быстро, установлена на сообщение. setContent (смешанный); // слева: (текстовый ресурс изображения) mimepart left = new mimepartpart (// rightpart orte (orte orte: orte: orte: orte-); right = new MimeBodyPart (); // установлен на Total Mail Block Mixed.AddBodyPart (слева); mixed.addbodypart (справа);/******* вложение **********/string attr_path = this.getClass (). getResource ("a.docx"). getPath (); dataSource attr_ds = new FileDataSource (новый файл (attr_path)); datahandler attr_handl DataHandler (attr_ds); right.setDatahandler (attr_handler); right.setFilename ("a.docx");/*************************Установить содержимое электронной почты: Multifunction пользователь по электронной почте (связанный) **************************4.1 Создание Multiffunct User Email Block MIMEMULTIPAr слева. SetContent (связанный); // 4.2 Создание многофункционального содержимого почтового блока = текст в левом ресурсе + изображения на правом контенте MimeBodyPart = new MimeBodyPart (); MimeBodyPart resource = new MimeBodyPart (); // Установите конкретный контент: a. Resource (picture) string filePath = app_3imgandatta.class.getresource ("8.jpg"). GetPath (); dataSource ds = new FileDataSource (новый файл (filePath)); DataHandler Handler = new DataHandler (ds); resource.setDaHandler (handler); resource.settent vercondid (ds); // Установите имя ресурса и ссылка на внешний ключ // Установите конкретный контент: b. Текстовое содержимое. SetContent ("<img src = 'cid: 8.jpg'/> ok!", "Text/html; charset = utf-8"); indiend.addbodypart (content); indiend.addybodypart (ресурс); // 5. sendtransport transper.gettransport (); "888"); Trans.SendMessage (Message, message.getAllRecipients ()); Trans.Close ();}}Выше приведен пример кода для загрузки и загрузки файлов Java, а также отправки и получения электронных писем. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!