Upload de arquivo JSP & Exemplos de programas de download de arquivos

Índice:

Anonim

Neste exemplo, aprenderemos 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 enviando um arquivo usando o objeto IO

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Arquivo Guru  Upload de arquivo Guru: Selecione o arquivo:

Action_file_upload.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. *, java.util. *, javax.servlet. *"%><% @ page import = "javax.servlet.http. *"%><% @ page import = "org.apache.commons.fileupload. *"%><% @ page import = "org.apache.commons.fileupload.disk. *"%><% @ page import = "org.apache.commons.fileupload.servlet. *"%><% @ page import = "org.apache.commons.io.output. *"%> Upload de arquivo Guru <%Arquivo de arquivo;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory fábrica = novo DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (new File ("c: \\ temp"));Upload de ServletFileUpload = novo ServletFileUpload (fábrica);upload.setSizeMax (maxFileSize);tentar{Lista fileItems = upload.parseRequest (solicitação);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 ();booleano isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();arquivo = novo arquivo (filePath + "yourFileName");fi.write (arquivo);out.println ("Nome do arquivo carregado: + filePath + fileName + "
");}}out.println ("");out.println ("");} catch (exceção ex) {System.out.println (ex);}}outro{out.println ("");out.println ("");out.println ("

Nenhum arquivo carregado

");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 específico

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

Resultado:

Estamos enviando o arquivo usando a opção de escolha do botão de arquivo e o botão de envio do arquivo carregará o arquivo para o servidor no 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

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Arquivo de upload do Guru Arquivo:

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 o atributo ie que especifica como os dados do formulário devem ser codificados e enviados ao servidor e é usado apenas 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 de tipo de envio 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

pacote 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 stub do construtor gerado automaticamente}protected void doPost (solicitação HttpServletRequest, resposta HttpServletResponse) lança ServletException, IOException {if (ServletFileUpload.isMultipartContent (pedido)) {tentar {List  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (pedido);para (item FileItem: multiparts) {if (! item.isFormField ()) {Nome da string = novo arquivo (item.getName ()). GetName ();item.write (new File ("c: / guru / upload" + File.separator + name));}}// Arquivo carregado com sucessorequest.setAttribute ("gurumessage", "Arquivo carregado com sucesso");} catch (exceção ex) {request.setAttribute ("gurumessage", "Falha no upload do arquivo devido a" + ex);}}outro{request.setAttribute ("gurumessage", "Nenhum arquivo encontrado");}request.getRequestDispatcher ("/ result.jsp"). forward (solicitação, resposta);}}

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 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, configure a mensagem de que "Falha no upload do arquivo"

Linha de código 40: Se o arquivo não for encontrado, defina 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

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Resultado do Guru <% String msg = (String) request.getAttribute ("message");out.println (msg);%>

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

Resultado:

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, obteremos 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.

Downloading_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Exemplo de download do Guru Arquivo de download do Guru  Baixe aqui !!! 

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

pacote 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;/ *** Classe de implementação de servlet guru_download* /public class guru_download extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet (solicitação HttpServletRequest, resposta HttpServletResponse) lança ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APLICATIVO / 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 (solicitação HttpServletRequest, resposta HttpServletResponse)* /protected void doPost (solicitação HttpServletRequest, resposta HttpServletResponse) lança ServletException, IOException {// TODO stub do método gerado automaticamente}}

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 definindo o tipo de conteúdo no objeto de resposta e também obtemos o objeto de escritor 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

Resultado:

Resultado:

Temos que clicar em download_1.jsp e obteremos um hiperlink como "Baixe 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.