Atualmente, existem dois métodos comumente usados para o upload de arquivos, um é o SmartUpload e o outro é o FileUpload do Apache do Commons .
Aqui, apresentamos principalmente o uso do segundo. Primeiro, você precisa fazer upload do arquivo e prestar atenção a vários problemas:
1 No formulário, adicione espaço <input type = "file" name = "myFile">
2 O formato de conteúdo do formulário deve ser definido como formato multipart/dados de dados
3 Biblioteca de classe necessária: 1 Commons-io.Jar 2 Commons-FileUpload-1.3.1.jar
Em seguida, vamos dar uma olhada no uso.
Primeiro, leia a documentação oficial do Apache Commons FileUpload e você pode encontrar as seguintes funções comumente usadas:
1 Crie um objeto de análise de arquivo
A cópia de código é a seguinte: DiskFileUpload diskfileUpload = new DiskFileUpload ();
2 Depois de analisar o arquivo, coloque -o na lista. Como essa biblioteca de classes suporta vários uploads de arquivos, o resultado será armazenado na lista.
A cópia do código é a seguinte: List <FileItem> list = diskfileUpload.parserequest (request);
3 Receba arquivos carregados e execute a análise (não é necessário)
A cópia do código é a seguinte: arquivo remotefile = new File (new String (FILEITEM.GETNAME (). GetBytes (), "UTF-8");
4 Crie um novo objeto e execute a cópia de streaming
file1 = novo arquivo (this.getServletContext (). getRealPath ("anexamento"), remotefile.getName ()); file1.getParentFile (). mkdirs (); file1.createNewFile (); InputStream ins = fileItem.getInputStream (); OutputStream OUS = new FileOutputStream (File1); tente {byte [] buffer = novo byte [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ("para salvar o arquivo"+file1.getabsolutepath ()+"<br/>"); } finalmente {ous.close (); ins.close (); }Dessa forma, concluímos o upload do arquivo.
fileUpload.html
<form action = "servlet/uploadServlet" method = "post" Enctype = "Multipart/Form-Data"> <div align = "Center"> <Fieldset> <legend> File de upload </lenign> <br/> <div align = "esquerd"> upload file1 </div> <div align = "esquerdo"> untrag. name = "file1"/> </div> <div align = "esquerd"> upload file2 </div> <div align = "esquerd"> <input type = "file" name = "file2"/> </div> <div> <div Divs = 'esquerda'> carregar o arquivo Instruções1 </div> </'' </input = 'esquerda'> align = 'esquerda'> carregar instruções do arquivo2 </div> <div align = 'left'> <input type = "text" name = "description2"/> </div> </div> <div> <div align = 'esquerda'> <input type = 'submit' value = "upload file"/> </div> </fieldset>
web.xml
<servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.test.hello.UploadServlet</servlet-class> </servlet><servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/servlet/UploadServlet</url-pattern> </servlet-mapping>
UploadServlet.java
pacote com.test.hello; importar java.io.file; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.inputStream; import java.io.io.OutputStream; import java.io.printwriter; import java.utel.list; importTream; javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importação org.apache.commons.fileUpload.diskfileUpload; org.apache.commons.fileupload.fileitem; importar org.apache.commons.fileupload.fileuploadexception; classe pública uploadServlet estende httpserlet { /*** construtor do objeto. */ public uploadServlet () {super (); } /*** Destruição do servlet. <br> */ public void Destroy () {super.Destroy (); // apenas coloca a string "Destroy" no log // coloca seu código aqui} /*** O método doget do servlet. <br> * * Este método é chamado quando um formulário possui seu método de valor de tag é igual a obter. * * @param solicitação A solicitação enviada pelo cliente para o servidor * @param Resposta A resposta enviada pelo servidor para o cliente * @throws servletexception Se ocorreu um erro * @THOWSows IoException Se ocorreu um erro */ public void Doget (httpServleTeQuest Solicy, httpsletResponse Response) Throwsceptionception, Ioxception (iOxception (iOx. Response.Setcharacterencoding ("UTF-8"); Response.getWriter (). println ("Por favor, carregue o arquivo no post"); } /*** O método dopost do servlet. <br> * * Este método é chamado quando um formulário possui seu método de valor de tag é igual a postar. * * @param request the request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ @SuppressWarnings({ "unchecked", "deprecation" }) public void doPost(HttpServletRequest request, HttpServletResponse response) throws Servletexception, ioexception {file file1 = null, file2 = null; String Descrição1 = NULL, Descrição2 = NULL; Response.Setcharacterencoding ("UTF-8"); request.setcharacterencoding ("UTF-8"); Response.setContentType ("Text/html"); PrintWriter out = Response.getWriter (); DiskFileUpload diskfileUpload = new DiskFileUpload (); tente {list <FileItem> list = diskfileUpload.parserequest (request); out.println ("Transfira todos os fileIitems ... <br/>"); para (fileItem fileItem: list) {if (fileItem.isformfield ()) {if ("description1" .equals (fileItem.getfieldName ())) {out.println ("transferência para descrição1 ... <br/>"); Descrição1 = new String (fileItem.getString (). getBytes (), "UTF-8"); } if ("description2" .equals (fileItem.getfieldName ())) {out.println ("viaje para descrição2 ... <br/>"); Descrição2 = new String (fileItem.getString (). getBytes (), "UTF-8"); }} else {if ("file1" .equals (fileItem.getfieldName ())) {file remotefile = new File (new String (fileItem.getName (). getBytes (), "utf-8"); out.println ("Viagem para o arquivo1 ... <br/>"); out.println ("Localização do arquivo do cliente:"+remotefile.getabsolutepath ()+"<br/>"); file1 = novo arquivo (this.getServletContext (). getRealPath ("anexamento"), remotefile.getName ()); file1.getParentFile (). mkdirs (); file1.createNewFile (); InputStream ins = fileItem.getInputStream (); OutputStream OUS = new FileOutputStream (File1); tente {byte [] buffer = novo byte [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ("para salvar o arquivo"+file1.getabsolutepath ()+"<br/>"); } finalmente {ous.close (); ins.close (); }} if ("file2" .equals (fileItem.getfieldName ())) {file remotefile = new File (new String (fileItem.getName (). getBytes (), "utf-8"); out.println ("Viagem para o arquivo2 ... <br/>"); out.println ("Localização do arquivo do cliente:"+remotefile.getabsolutepath ()+"<br/>"); file2 = novo arquivo (this.getServletContext (). getRealPath ("anexo"), remotefile.getName ()); file2.getParentFile (). mkdirs (); file2.CreateNewFile (); InputStream ins = fileItem.getInputStream (); OutputStream OUS = new FileOutputStream (File2); tente {byte [] buffer = novo byte [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ("para salvar o arquivo"+file2.getabsolutepath ()+"<br/>"); } finalmente {ous.close (); ins.close (); }}} out.println ("A análise da solicitação é concluída <br/> <br/>"); }} catch (fileUploadexception e) {} out.println ("<! doctype html public/"-// w3c // dtd html 4.01 transitório // en/">"); out.println ("<head> <title> um servlet </ititle> </ad Head>"); out.println ("<body>"); if (file1! = null) {out.println ("<div>"); out.println ("<div align = 'esquerda'> file1; </div>"); out.println ("<div align = 'esquerda'> <a href = '"+request.getContextPath ()+"/Apption/"+file1.getName ()+"' alvo = _blank>"+file1.getName ()+"</a>"); out.println ("</div>"); out.println ("</div>"); } if (file2! = null) {out.println ("<div align = 'esquerda'> file2; </div>"); out.println ("<div align = 'esquerda'> <a href = '"+request.getContextPath ()+"/attachment/"+file2.getName ()+"' target = _blank>"+file2.getName ()+"</a>"); out.println ("</div>"); out.println ("</div>"); } out.println ("<div>"); out.println ("<div align = 'esquerda'> description1: </div>"); out.println ("<div align = 'esquerda'>"); out.println (description1); out.println ("</div>"); out.println ("</div>"); out.println ("</div>"); out.println ("<div align = 'esquerda'> description2: </div>"); out.println ("<div align = 'esquerda'> description2: </div>"); out.println ("<div align = 'esquerda'>"); out.println ("</div>"); out.println ("</div>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.Close (); } /*** Inicialização do servlet. <br> * * @Throws servletexception Se ocorrer um erro */ public void init () lança servletexception {// coloque seu código aqui}}Exemplo de execução
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.