JSP pode fazer upload de arquivos para o servidor por meio de formulários HTML. O tipo de arquivo pode ser um arquivo de texto, um arquivo binário, um arquivo de imagem ou qualquer outro documento.
A seguir usamos tags HTML para criar o formulário de upload de arquivo. Os seguintes pontos devem ser observados:
O atributo do método de formulário deve ser definido como o método POST e o método GET não pode ser usado.
O atributo enctype do formulário precisa ser definido como multipart/form-data.
O atributo de ação do formulário precisa ser definido como o endereço do arquivo jsp enviado em segundo plano para upload do arquivo. Por exemplo, o arquivo de programa uploadFile.jsp é usado para processar arquivos carregados.
Para fazer upload de um elemento de arquivo, você precisa usar a tag <input .../> e definir o atributo como type="file". Se precisar fazer upload de vários arquivos, você pode definir nomes diferentes na tag <input .../>.
A seguir está um formulário para upload de arquivos.
<html><head><title>Formulário de upload de arquivo</title></head><body><h3>Upload de arquivo:</h3>Selecione um arquivo para upload: <br /><form action="UploadServlet" method="post" enctype="multipart/form-data"><input type="file" name="file" size="50" /><br /><input type="submit" value="Carregar arquivo " /></form></body></html>Acesse o arquivo em seu navegador local. A interface de exibição é a seguinte. Ao clicar em "Carregar arquivo", uma janela aparecerá permitindo que você selecione o arquivo a ser carregado:
Primeiro, primeiro definimos o local onde o arquivo é armazenado no serviço após o upload. Você pode escrever o caminho em seu programa ou podemos definir o diretório onde o arquivo é armazenado definindo o elemento context-param no web.xml. arquivo de configuração, como mostrado a seguir:
<web-app>....<context-param> <description>Endereço de upload de arquivo</description> <param-name>file-upload</param-name> <param-value> c:apache-tomcat- 5.5.29webappsdata </param-value> </context-param>....</web-app>
O seguinte arquivo de script UploadFile.jsp pode lidar com vários arquivos carregados. Antes de usar este script, precisamos prestar atenção aos seguintes pontos:
O exemplo a seguir depende de FileUpload, portanto, você precisa introduzir o arquivo do pacote commons-fileupload.xxjar mais recente em seu caminho de classe. O endereço de download é: http://commons.apache.org/fileupload/.
FileUpload depende do Commons IO, então você precisa introduzir o commons-io-xxjar mais recente em seu caminho de classe. O endereço de download é: http://commons.apache.org/io/.
Ao testar o exemplo a seguir, você precisa fazer upload e confirmar se o tamanho do arquivo enviado é menor que o tamanho definido pela variável maxFileSize , caso contrário, o arquivo não pode ser carregado com sucesso.
Certifique-se de ter criado os diretórios c:temp e c:apache-tomcat-5.5.29webappsdata.
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %><%@ page import="javax.servlet.http.*" %><%@ page import= "org.apache.commons.fileupload.*" %><%@ página import="org.apache.commons.fileupload.disk.*" %><%@ página import="org.apache.commons.fileupload.servlet.*" %><%@ page import="org.apache.commons.io.output.*" %><% Arquivo arquivo; int maxFileSize = 5000 * 1024; int maxMemSize = 5000 * 1024 Contexto ServletContext = pageContext.getServletContext(); context.getInitParameter("file-upload"); // Verifique o tipo de conteúdo enviado String contentType = request.getContentType(); factory = new DiskFileItemFactory(); // Define o tamanho máximo dos arquivos armazenados na memória factory.setSizeThreshold(maxMemSize); Os dados armazenados localmente são maiores que maxMemSize. factory.setRepository(new File("c:\temp")); // Cria um novo manipulador de upload de arquivo ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax( maxFileSize ); try{ // Analisar o arquivo obtido List fileItems = upload.parseRequest(request); Processar arquivos enviados Iterador i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>Upload de arquivo JSP</title> " ); out.println("</head>"); out.println("<body>"); enquanto ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) { // Obtenha os parâmetros do arquivo enviado String fieldName = fi.getFieldName(); .isInMemory (); long sizeInBytes = fi.getSize(); // Grava no arquivo if( fileName.lastIndexOf("\") >= 0 ){ arquivo = new File( filePath , fileName.substring( fileName.lastIndexOf("\"))) ; }else{ arquivo = new File( filePath , fileName.substring(fileName.lastIndexOf("\")+1)) } fi.write(arquivo); out.println("Nome do arquivo carregado: " + filePath + fileName + "<br>"); out.println("</body>"); out.println("</html>"); }catch(Exceção ex) { System.out.println(ex); html>"); out.println("<head>"); out.println("<title>Upload de servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>Nenhum arquivo enviado</p>"); out.println("</body>"); "); }%>
A seguir, vamos acessar http://localhost:8080/UploadFile.htm através do navegador. A interface é mostrada abaixo e fazer upload do arquivo:
Se o seu script JSP for executado normalmente, o arquivo será carregado em c:apache-tomcat-5.5.29webappsdata.