O upload de arquivo é muito comum em aplicativos da Web. É muito fácil implementar a função de upload de arquivos no Java Web Environment, porque já existem muitos componentes desenvolvidos em Java para upload de arquivos na Internet. Este artigo usa o componente mais Commons-FileUpload como exemplo para demonstrar como adicionar a função de upload de arquivos aos aplicativos da Web Java.
O componente Commons-FileUpload é um dos projetos de código aberto da Apache e pode ser baixado em http://commons.apache.org/fileupload/. Esse componente é simples e fácil de usar, permitindo que você faça upload de um ou mais arquivos por vez e pode limitar o tamanho do arquivo.
Após o download, descompacte o pacote ZIP e copie o Commons-FileUpload-1.x.jar para o WebApps do Tomcat/seu WebApp/Web-Inf/Lib/. Se o diretório não existir, crie seu próprio diretório.
Crie um novo uploadServlet.java para upload de arquivos:
pacote com.liaoxuefeng.web; classe pública FileUploadServlet estende httpServlet {private string uploaddir = "c: // temp"; @Override Protected void DoPost (httpServletRequest req, httpServletResponse resp) lança servletexception, ioexception {// TODO:}}Quando o servlet recebe a solicitação de postagem emitida pelo navegador, ele implementa o upload do arquivo no método doPost (). Precisamos atravessar o FileItemiterator e obter cada FileItemStream:
@OverRideProtected void DoPost (httpServletRequest req, httpServletResponse resp) lança servletexception, ioexception {try {servletfileUpload upload = new servletfileUpload (); // Defina o tamanho do arquivo máximo como 1 MB: upload.setFilesizEMAX (1024 * 1024); FileItemiterator it = upload.getItemiterator (req); // manipula com cada arquivo: while (it.hasnext ()) {fileItemStream item = it.Next (); if (! item.isformfield ()) {// é um upload de arquivo: handleFileItem (item); }} req.getRequestDispatcher ("success.jsp"). Forward (req, resp); } catch (fileUploadexception e) {tire nova servletexception ("não é possível fazer upload de arquivo.", e); }}Leia o fluxo de entrada de arquivos enviados no método HandleFileItem () e, em seguida, escreva -o para o uploaddir, e o nome do arquivo é gerado aleatoriamente por UUID:
Void handleFileItem (item FileItemStream) lança IoException {System.out.println ("File de upload:" + item.getName ()); Arquivo newUploadfile = novo arquivo (uploaddir + "/" + uuid.randomuuid (). Tostring ()); byte [] buffer = novo byte [4096]; InputStream input = null; OutputStream Output = NULL; tente {input = item.openstream (); output = new BufferedOutputStream (new FileOutputStream (newUploadfile)); para (;;) {int n = input.read (buffer); if (n == (-1)) quebra; output.write (buffer, 0, n); }} finalmente {if (input! = null) {try {input.close (); } catch (ioexception e) {}}}Se você quiser ler a pasta de upload especificada no arquivo de configuração web.xml, você pode inicializá -lo no método init ():
@OverridePublic void init (servletconfig config) lança servletexception {super.init (config); this.uploaddir = config.getInitParameter ("dir");}Por fim, configure o servlet em web.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.liaoxuefeng.web.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/upload</url-pattern> </servlet-mapping></web-app>
Depois de configurar o servlet, inicie o tomcat ou resina e escreva um teste simples de índice.htm:
<html> <body> <p> FileUploadServlet Demo </p> <names name = "form1" action = "upload" method = "post" rtype = "multipart/form-data"> <input type = "file" name = "file"/> <type = "submit" name = "buttão" "" "" "", "name"/"name"/"file"/> <put type = "submit" name = "buttão" "=" "" "", "name"/"name"/"file"/> <put type = "submit" name = "" "" "" "", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", o número do e ", o número do meio do dia.
Observe que Action = "Upload" especifica o URL de mapeamento do FileUploadServlet que lida com arquivos carregados.
Quando o upload é bem -sucedido, o sucesso.jsp é exibido, caso contrário, uma exceção é lançada. Se o tamanho do arquivo carregado exceder 1 MB que definiremos, obteremos um FileSizelImitexEdException.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.