1. O princípio do upload do arquivo
1. Pré -requisitos para upload de arquivos:
um. O método do formulário deve ser postado
b. O encantamento do formulário de formulário deve ser multipart/formulário (determina o método de solicitação de postagem e o tipo de dados do corpo de solicitação)
c. O tipo de entrada fornecida no formulário é um domínio de upload de arquivo de arquivo.
2. Use componentes de terceiros para obter upload de arquivo
1. Componente Commons-Fileupload:
JAR: Commons-FileUpload.Jar
Commons-io.jar
2. Classe central ou interface
DiskFileItemFactory: Defina o ambiente
Public void SetsizethSreshold (int sizethreshold): Defina o tamanho do buffer. O padrão é de 10kb.
Quando o arquivo carregado excede o tamanho do buffer, o componente FileUpload fará o upload do arquivo usando um cache de arquivo temporário
public void setRepository (java.io.file repositório): defina o diretório onde os arquivos temporários são armazenados. Por padrão, o diretório de armazenamento temporário de arquivos do sistema.
ServletFileUpload: Classe de upload do núcleo (função principal: analisando o conteúdo do corpo da solicitação)
ISMultipartContent booleano (httpServletRequest? Solicitação): determina se o encantamento do formulário do usuário é do tipo multipart/formulário.
Lista parserequest (solicitação httpServletRequest): analisar o conteúdo no corpo da solicitação
setFilesizEMAX (4*1024*1024); // Defina o tamanho de um único arquivo carregado
upload.SetSizEMAX (6*1024*1024); // Defina o tamanho total do arquivo
FileItem: representa um campo de entrada no formulário.
boolean isformfield (): é um campo normal
String getFieldName: Obtenha o nome de campo do campo normal
String getString (): obtenha o valor de um campo normal
InputStream getInputStream (): Obtenha o fluxo de entrada de campos carregados
String getName (): Obtenha o nome do arquivo carregado
Exemplo: Crie primeiro uma pasta de arquivos no diretório Web-Inf, ou seja, todos os arquivos devem ser carregados aqui, que é para evitar o acesso direto por outros.
1. Obtenha o caminho real dos arquivos
String storePath = getServletContext (). GetRealPath ("/web-inf/files");
2. Configure o ambiente
DiskFileItemFactory Factory = new DiskFileItemFactory (); // onde está o cache padrão e o local de armazenamento de arquivos temporários
3. Juntamente o método de entrega do formulário
boolean ismultipart = servletfileUpload.ismultipartContent (solicitação); if (! ismultipart) {System.out.println ("Método de upload errado!"); retornar; }4. Classe principal de upload de arquivo
ServletfileUpload upload = new ServletFileUpload (fábrica); 5. Analise // Parse List <FileItem> itens = upload.parserequest (solicitação); para (FileItem Item: itens) {if (item.isformfield ()) {// Campo normal, string fieldName enviado pelo formulário = item.getfieldName (); // Nome do campo da informação do formulário String fieldValue = item.getString (); // Formulário de informações do campo Valor do campo System.out.println (FieldName+"="+FieldValue); } else // Processamento de arquivo {inputStream em = item.getInputStream (); // Carregar o nome do arquivo c: /users/administrator/desktop/a.txt string name = item.getName (); // só preciso de A.txt string filename = name.substring (name.lastindexof ("//")+1); // Construa o fluxo de saída String storgeFile = storePath+"//"+arquivo filen; // Carregar o endereço de salvar o arquivo de saída do arquivo outam Out = new FileOutputStream (StoreFile); byte [] b = novo byte [1024]; int len = -1; while ((len = in.read (b))! =-1) {out.write (b, 0, len); } in.close (); // feche o fluxo out.close (); }}Escreva um formulário
<%@ página de página = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%string path = request.getContextPath (); string basepath = request.getscheme ()+": //"+request.getSername ()+":"+request.g); "-// w3c // dtd html 4.01 transitório // pt"> <html> <head> <base href = "<%= bashepath%>"> <title> meu jsp '1.jsp' página de partida </title> <meta http-= "-pagma" = "não-cache"> " content = "sem cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, palavra-chave2, palavra-chave3"> <meta http-equiv = "descrição" content = "this é minha página"> <! href = "styles.css">-> </head> <body> <form action = "$ {PagEContext.request.ContextPath}/servlet/uploadservlet2" method = "post" rtype = "multipart/form-data"> username <input type = "text" name = "username" "" "/" FIDRO "/figura" ". name = "f1"/> <br/> <input type = "file" name = "f2"/> <br/> <input type = "submit" value = "salvar"/> </morm> </body> </html>Escreva um servlet de envio: uploadServlet2
pacote com.liuzhen.upload; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.inputStream; importar java.io.outputStream; import java.util.list; import javax.servlet.pertLeTException; importação javax.servlet.http.httpServletReQuest; importar javax.servlet.http.httpServletResponse; importar org.apache.commons.fileupload.fileitem; import orgache.commons.fileUplOad.fileUploadex org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;//Introduction to file upload public class UploadServlet2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws Servletexception, ioexception {// Defina o codificação Request.SetcharAcTerEncoding ("UTF-8"); Response.setContentType ("Texto/html; charset = utf-8"); tente {// upload do arquivo string storePath = getServletContext (). getRealPath ("/web-inf/files"); // defina o ambiente DiskFileItemFactory Factory = new DiskFileItemFactory (); // Juiz Formulário de transmissão do formulário Formulário Enctype = Multipart/form-Data boolean ismultipart = servletfileUpload.ismultipartContent (request); if (! ismultipart) {System.out.println ("Método de upload está incorreto!"); retornar; } ServletfileUpload upload = new ServletFileUpload (fábrica); // Lista de parse <FileItem> itens = upload.parserequest (solicitação); para (FileItem Item: itens) {if (item.isformfield ()) {// Campo normal, string fieldName enviado pelo formulário = item.getfieldName (); // Nome do campo da informação do formulário String fieldValue = item.getString (); // Formulário de informações do campo Valor do campo System.out.println (FieldName+"="+FieldValue); } else // Processamento de arquivo {inputStream em = item.getInputStream (); // Carregar o nome do arquivo c: /users/administrator/desktop/a.txt string name = item.getName (); // só preciso de A.txt string filename = name.substring (name.lastindexof ("//")+1); // Construa o fluxo de saída String storgeFile = storePath+"//"+arquivo filen; // Carregar o endereço de salvar o arquivo de saída do arquivo outam Out = new FileOutputStream (StoreFile); byte [] b = novo byte [1024]; int len = -1; while ((len = in.read (b))! =-1) {out.write (b, 0, len); } in.close (); // feche o fluxo out.close (); }}} catch (fileUploadexception e) {throw novo RUNTimeException (e); }} public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {doget (solicitação, resposta); }}O arquivo carregado está no aplicativo Tomcat.
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.