Exemplos de programas de upload e download de arquivos JSP

Neste exemplo, vamos aprender sobre como fazer upload e download de um arquivo por meio de JSP.

A saída de entrada de arquivo são operações muito importantes. Aqui vamos ler e escrever um arquivo usando JSP.

Upload de arquivo JSP

  • Podemos fazer upload de qualquer arquivo usando JSP.
  • Pode ser um arquivo de texto, arquivo binário, arquivo de imagem ou qualquer outro documento.
  • Aqui, no caso de upload de arquivo, apenas o método POST será usado e não o método GET.
  • O atributo Enctype deve ser definido como multipart / form-data.

Exemplo: usando ação

Neste exemplo, estamos carregando um arquivo usando o objeto IO

Action_file.jsp

 Guru File  Guru File Upload:  Select file:  

Action_file_upload.jsp

 Guru File Upload = 0)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(maxMemSize); factory.setRepository(new File('c:\temp')); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax( maxFileSize ); try{ List fileItems = upload.parseRequest(request); Iterator i = fileItems.iterator(); out.println(''); out.println(''); while ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) { String fieldName = fi.getFieldName(); String fileName = fi.getName(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize(); file = new File( filePath + 'yourFileName') ; fi.write( file ) ; out.println('Uploaded Filename: ' + filePath + fileName + '  
'); } } out.println(''); out.println(''); }catch(Exception ex) { System.out.println(ex); } }else{ out.println(''); out.println(''); out.println('

No file uploaded

'); out.println(''); out.println(''); } %>

Explicação do código:

Action_file.jsp

Linha de código 12-18: Aqui estamos criando um formulário com o campo de arquivo, que fará upload do arquivo para o servidor e a ação será passada para action_file_upload.jsp

Action_file_upload.jsp

Linha de código 20: Aqui estamos fornecendo o caminho do arquivo para um caminho particular

Linha de código 23-38: Aqui, verificamos se o tipo de conteúdo é multipart / form-data. Se for esse o caso, o conteúdo é do tipo de arquivo e é lido. Após a leitura do arquivo, ele é gravado no arquivo temporário e, em seguida, o arquivo temporário é convertido no arquivo principal.

Ao executar o código acima, você obtém a seguinte saída

Saída:

Estamos enviando o arquivo usando a opção de escolha do botão de arquivo e o botão de envio do arquivo fará o upload do arquivo para o servidor para o caminho fornecido.

Exemplo: usando operações JSP

Neste exemplo, faremos upload de um arquivo usando operações JSP.

Tomaremos um formulário que terá o botão 'upload' e quando você clicar no botão upload o arquivo será carregado.

Uploading_1.jsp

 Guru Uploading File File:  

Explicação do código:

Linha de código 11-12: Aqui estamos tomando um formulário que tem ação no servlet guru_upload que passará por um método POST. Além disso, aqui codificamos, ou seja, o atributo que especifica como os dados do formulário devem ser codificados e enviados ao servidor e só é usado com o método POST. Aqui estamos definindo como multipart / form-data que é para o arquivo (pois os dados serão grandes).

Linha de código 13: Aqui, estamos especificando o elemento guru_file com o tipo de arquivo e dando o tamanho de 50.

Linha de código 15: Este é um botão do tipo enviar com o nome 'Upload' por meio do qual o servlet de ação será chamado e a solicitação será processada nesse botão e o arquivo será lido e gravado no servlet.

Guru_upload.java

 package demotest; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class guru_upload extends HttpServlet { private static final long serialVersionUID = 1L; public guru_upload() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(ServletFileUpload.isMultipartContent(request)){ try { List multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); for(FileItem item : multiparts){ if(!item.isFormField()){ String name = new File(item.getName()).getName(); item.write( new File('c:/guru/upload' + File.separator + name)); } } //File uploaded successfully request.setAttribute('gurumessage', 'File Uploaded Successfully'); } catch (Exception ex) { request.setAttribute('gurumessage', 'File Upload Failed due to ' + ex); } }else{ request.setAttribute('gurumessage','No File found'); } request.getRequestDispatcher('/result.jsp').forward(request, response); } } 

Explicação do código:

Linha de código 12-14: Aqui, teremos que importar a biblioteca org.apache.commons para a configuração do código. Teremos que importar a classe fileupload da biblioteca org.apache.commons.

Linha de código 23: Aqui temos o método doPost (), que será chamado conforme estamos passando o método POST em JSP e ele solicitará e responderá objetos como seus parâmetros

Linha de código 26: Aqui estamos criando um objeto da classe ServletFileUpload do pacote fileUpload da biblioteca org.apache.commons que irá verificar se há algum objeto de arquivo em JSP. Se algum for encontrado, esse objeto de arquivo será obtido a partir do pedido.

Linha de código 27-32: Iremos iterar o número de arquivos verificando quantos itens de arquivo estão presentes no objeto multiparts que é um objeto de lista (se carregarmos mais de um arquivo) e salvá-lo na pasta c: / guru / upload com o nome do arquivo que foi fornecido . Estamos gravando o arquivo usando o método de gravação do objeto de arquivo na pasta mencionada.

Linha de código 34: Se não houver exceção, estamos definindo o atributo na solicitação como gurumessage com o valor 'Arquivo carregado com êxito'.

Linha de código 35-36: Se ocorrer uma exceção, definir a mensagem de que 'Falha no upload do arquivo'

Linha de código 40: Se o arquivo não for encontrado, definir a mensagem como 'Nenhum arquivo encontrado'

Linha de código 42: Encaminhando solicitação usando o objeto requestdispatcher para result.jsp com objetos de solicitação e resposta.

Result.jsp

 Guru Result 

Explicação do código:

Linha de código 10: Aqui, estamos obtendo o atributo do objeto de solicitação com o valor gurumessage em um objeto de string.

Linha de código 11: Aqui estamos imprimindo essa mensagem.

Quando executamos o código acima, obtemos a seguinte saída

Saída:

Recebemos um formulário no qual existem campos para escolher um arquivo do diretório. Uma vez que o arquivo é selecionado, temos que clicar no botão de upload.

Assim que o botão de upload for clicado, recebemos a mensagem de que o arquivo foi carregado com sucesso.

No diagrama abaixo, podemos ver que o arquivo foi carregado na pasta c: / guru / upload.

Baixando arquivo:

Neste exemplo, vamos baixar um arquivo de um diretório clicando no botão.

Baixando_1.jsp

 Downloading Guru Example Guru Downloading File  Download here!!!  

Explicação do código:

Linha de código 10: Aqui, fornecemos um link para baixar um arquivo da pasta c: / guru / upload usando servlet guru_download.

Guru_download.java

 package demotest; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class guru_download */ public class guru_download extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType('text/html'); PrintWriter out = response.getWriter(); String gurufile = 'test.txt'; String gurupath = 'c:/guru/upload/'; response.setContentType('APPLICATION/OCTET-STREAM'); response.setHeader('Content-Disposition', 'attachment; filename='' + gurufile + '''); FileInputStream fileInputStream = new FileInputStream(gurupath + gurufile); int i; while ((i = fileInputStream.read()) != -1) { out.write(i); } fileInputStream.close(); out.close(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } 

Explicação do código:

Linha de código 3-5: Aqui estamos importando FileInputStream, IO Exception e PrintWriter do pacote java.io.

Linha de código 15: Estamos definindo o servlet guru_download que estende HttpServlet.

Linha de código 18: Como definimos um href, que será incluído no URL, então o método GET será processado (doGet será chamado no servlet) que também inclui objetos de solicitação e resposta.

Linha de código 19-20: Estamos configurando o Tipo de conteúdo no objeto de resposta e também obtemos o objeto do escritor a partir da resposta.

Linha de código 21-22: Definindo uma variável como gurufile como valor test.txt e gurupath como c: / guru / upload /

Linha de código 23-25: Estamos definindo o tipo de conteúdo usando o objeto de resposta e usamos o método setHeader, que define o cabeçalho no objeto de resposta como o nome do arquivo que foi carregado.

Linha de código 27-28: Estamos criando FileInputStream no qual adicionaremos gurupath + gurufile.

Linha de código 31-33: Aqui pegamos um loop while que será executado até que o arquivo seja lido, portanto, demos a condição como! = -1. Nesta condição, estamos escrevendo usando o objeto printwriter out.

Ao executar o código acima, você obterá a seguinte saída

Saída:

Saída:

Temos que clicar em download_1.jsp e obteremos um hiperlink como 'Faça o download aqui'. Ao clicar neste arquivo de hiperlink, ele será baixado para o sistema.

Resumo:

  • Aprendemos sobre o formulário de registro para registrar-se em qualquer aplicativo
  • Aprendi mais sobre como funcionam os formulários de login e logout.
  • Também aprendi sobre como fazer upload e download de um arquivo por meio de JSP.