Загрузка файлов очень распространена в веб -приложениях. В веб -среде Java очень легко реализовать функцию загрузки файлов, потому что в Java уже есть много компонентов для загрузки файлов в Интернет. В этой статье используется компонент большинства Commons-FileUpload в качестве примера, чтобы продемонстрировать, как добавить функцию загрузки файлов в веб-приложения Java.
Компонент Commons-FileUpload является одним из проектов Apache's с открытым исходным кодом и может быть загружен с http://commons.apache.org/fileupload/. Этот компонент прост и прост в использовании, что позволяет загружать один или несколько файлов за раз и может ограничить размер файла.
После загрузки рассеивает пакет ZIP и копируйте Commons-FileUpload-1.x.jar в WebApps/your webapp/web-inf/lib/. Если каталог не существует, пожалуйста, создайте свой собственный каталог.
Создайте новый uploadservlet.java для загрузки файлов:
пакет com.liaoxuefeng.web; public class fileuploadservlet расширяет httpservlet {private string uploaddir = "c: // temp"; @Override Protected void Dopost (httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {// todo:}}Когда сервлет получает запрос POST, выданный браузером, он реализует загрузку файлов в методе DoPost (). Нам нужно пересечь файловой
@OverrideProtected void Dopost (httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {try {servletfileupload upload = new servletfileUpload (); // Установить максимальный размер файла на 1 МБ: upload.setFilesizeMax (1024 * 1024); FileItemiterator it = upload.getIteMiterator (req); // Обработка с каждым файлом: while (it.hasnext ()) {fileitemstream item = it.next (); if (! item.isformfield ()) {// Это загрузка файла: handlefiletem (item); }} req.getRequestDispatcher ("success.jsp"). } catch (fileuploadexception e) {throw new servletexception («Невозможно загрузить файл», e); }}Прочитайте поток ввода загруженных файлов в методе harderfileitem (), а затем напишите его в uploaddir, и имя файла случайным образом генерируется Uuid:
void harderfileItem (элемент fileitemstream) Throws ioException {System.out.println ("upload file:" + item.getName ()); File newUploadFile = new File (uploadDir + "/" + uuid.randomuuid (). ToString ()); Byte [] buffer = новый байт [4096]; InputStream input = null; OutputStream output = null; try {input = item.openstream (); output = new BufferedOutputStream (New FileOutputStream (NewUploadFile)); for (;;) {int n = input.read (buffer); if (n == (-1)) разрыв; output.write (буфер, 0, n); }} наконец {if (input! = null) {try {input.close (); } catch (ioException e) {}}}Если вы хотите прочитать указанную папку для загрузки в файле конфигурации web.xml, вы можете инициализировать ее в методе init ():
@OverridePublic void init (конфигурация ServletConfig) Throws ServletException {super.init (config); this.uploaddir = config.getinitparameter ("dir");}Наконец, настройте сервис в web.xml:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Web-App Public "-// Sun Microsystems, Inc.//dtd веб-приложение 2.3 // en" "http://java.sun.com/dtd/web-app_2_3.dtd" <Servlet-name> uploadServlet </servlet-name> <vervlet-class> com.liaoxuefeng.web.fileuploadservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> uploadservlet </servlet-ame> <rl-pattern>/upload </url-pattern </servlet-mame> <rl-pattern>/upload>
После настройки сервлета, запустите Tomcat или смолу и напишите простой тест index.htm:
<html> <body> <p> fileuploadservlet demo </p> <form name = "form1" action = "upload" method = "post" enctype = "Multipart/form-data"> <input type = "file" name = "file"/> <input type = "отправить" name = value = "/> </> </> </ht hat> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht> </ht
Обратите внимание, что action = "upload" Указывает картирование URL -адреса файла FileUploadServlet, который обрабатывает загруженные файлы.
Когда загрузка успешна, отображается успех. JSP отображается, в противном случае исключено. Если загруженный размер файла превышает 1 МБ, который мы установили, мы получим файл izeLimitexedEdException.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.