Загрузка файла является очень распространенной функцией на веб -сайте. Вы должны анализировать параметры запроса непосредственно с помощью сервлета для получения загруженных файлов, что довольно хлопотно. Поэтому вы обычно выбираете использовать инструмент Apache Open Source, Common-FileBload. Этот пакет JAR можно найти на официальном сайте Apache или в папке Lib of Struts. Функция загрузки стойки основана на этой реализации.
Common-FileUpload зависит от пакета Common-IO, поэтому вам также необходимо загрузить этот пакет. Затем импортируйте его под путь проекта.
Используйте код следующим образом
пакет oop.hg.ytu.servlet; Импорт java.io.file; импортировать java.io.ioexception; импортировать java.io.inputstream; импортировать java.util.list; Импорт javax.servlet.servletexception; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт oop.hu.ytu.dao.uploaddomain; Импорт org.apache.commons.fileupload.fileitem; Import org.apache.commons.fileupload.disk.diskfileitemfactory; Import org.apache.commons.fileupload.servlet.servletfileUpload; Общедоступная загрузка класса расширяется httpservlet { / *** обрабатывать запрос загрузки пользователя* / private static final long serialversionuid = 1l; public void Doget (httpservletrequest, httpservletresponse response) бросает Servletexception, ioexception {// string description = request.getParameter («описать»); DiskFileItemfactory Factory = new DiskFileItemFactory (); @Suppresswarnings ("temercation") String Path = request.getRealPath ("/upload"); // Установить путь буфера диска Factory.setRepository (новый файл (path)); factory.setSizeThreshold (1024*1024); // Установите создание размера буфера ServletFileUpload upload = new ServletFileUpload (Factory); upload.setsizemax (-1); // Установить размер предела файла загрузки, -1 Unlimited try {@suppresswarnings ("unchecked") list <fieTem> list = upload.parserequest (request); String va = null; для (файл fileitem: list) {// string name = item.getfieldname (); if (item.isformfield ()) {// судить, является ли это файлом потоком va = item.getString ("utf-8"); // System.out.println (name+"="+va); /// request.setattribute (имя, значение); } else {string value = item.getName (); // передаст полное имя пути int start = value.lastIndexof ("//"); String fileName = value.substring (start+1); // request.setattribute (имя, имя файла); InputStream in = item.getInputStream (); Uploaddomain dao = new uploaddomain (); //item.write(new file (realpath, имя файла)); int index = filename.lastIndexof ("."); String RealfilEname = filename.substring (0, index); String type = filename.substring (index+1); dao.insert (in, realfilename, type, va); // Поместить в базу данных}}} catch (Exception e) {e.printstacktrace (); }} public void dopost (httpservletrequest -запрос, httpservletresponse response) throws servletexception, ioexception {Doget (запрос, ответ); }} Здесь мы определяем, является ли это загруженным потоком или параметрами в форме, такими как отправка информации в текстовое поле, а затем вставьте их в базу данных. Код вставки базы данных выглядит следующим образом
пакет oop.hu.ytu.dao; импортировать java.io.inputstream; Импорт java.sql.connection; Импорт java.sql.preparedStatement; импортировать java.sql.resultset; Импорт oop.hg.ytu.utils.jdbcutils; /*** Предоставьте поддержку загрузки файла* @author Administrator**/public Class uploaddomain {/*** Поместите загруженный файл в базу данных*/public void вставка (inputstream in, string fileName, тип строки, описывание строки). Подготовленное предприятие PS = NULL; Результат RS = NULL; System.out.println (описать); try {// 2. Установить соединение conn = jdbcutils.getConnection (); // 3. Создать операторную string sql = "Вставка в FileUpload (файл, имя файла, тип, des) значения (?,?,?,?)"; ps = conn.preprestatement (sql); ps.setblob (1, in); Ps.setString (2, имя файла); Ps.setString (3, тип); Ps.SetString (4, опишите); // 4. Выполнить оператор ps.executeupdate (); in.close (); } наконец {jdbcutils.free (rs, ps, conn); }}} Вы можете столкнуться с ограничением размера цены базы данных по умолчанию. Вам необходимо изменить следующую конфигурацию под My.ini в рамках каталога установки MySQL.
[mysqld]
MAX_ALLYED_PACKET = 64M
Вот и все. Конечно, обратите внимание на формат кодирования. Загрузите файл и выполните его. Другое дело, что одно из имен моих столбцов установлено для описания, и результат заключается в том, что я противоречил с зарезервированными словами MySQL, и информация не может быть вставлена. Вы должны обратить на это внимание в будущем.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.