O pacote JAR do Commons-FileUpload fornecido pelo Apache é realmente muito simples de fazer upload de arquivos. Recentemente, tenho que usar o Servlet/JSP para fazer uma função de upload de imagem. Eu encontrei muitas informações on -line, a maioria das quais é introduzida com base na estrutura do Struts. Embora alguns deles também introduzam o upload do Common-FileUpload, esses exemplos são relativamente antigos e algumas categorias agora são abandonadas.
Através do resumo da pesquisa e do estudo, a função de upload foi finalmente concluída. Deixe -me compartilhar com você abaixo.
Cenários de caso
Uma interface de gerenciamento de back -end da biblioteca precisa fornecer a função de fazer upload de fotos de livros e finalmente exibi -la na página.
Perceba o efeito
Digite a página de adição de livro e a imagem padrão é exibida "sem avanço ainda" (o comprimento e a largura são 200px) e um botão é fornecido para "fazer upload de imagem", conforme mostrado na imagem a seguir.
Clique no botão "Carregar imagem" e a interface de upload aparece na janela do modo, conforme mostrado na figura abaixo.
Selecione a imagem especificada através do botão "Procurar", clique no botão "Upload" para fazer upload. Se o upload for bem -sucedido, um prompt de sucesso será exibido. Depois que o usuário clica em "OK", fecha a janela pop-up e exibe automaticamente a nova imagem na página, conforme mostrado na figura abaixo.
Implementação de código
① Primeiro Crie um livro Adicionar página: bookadd.jsp
A tag oculta com a página ID Photo_Id é usada para armazenar o caminho da imagem, o que é conveniente para envio ao plano de fundo e armazenado no banco de dados, e a tag <mg> com o ID do IMG_ID é usada para exibir as imagens. Todas as fotos são armazenadas no servidor para facilitar a leitura. Em seguida, um botão de tecla JS, clique em EXPLAR a página de upload pela janela Modo. Quando a janela do modo é exibida, uma vitória variável é definida, que é usada para obter o valor do caminho da imagem transmitido pela janela Modo.
(Nota: Devido a problemas de segurança, as imagens não podem ser armazenadas à vontade. Se o projeto for implantado no servidor, as imagens só poderão ser visualizadas no servidor. Se você precisar ler imagens que não estão no servidor atual, você precisa configurar o diretório virtual do servidor)
<html> <head> <title> Adicionar livro </ititure> <script type = "text/javascript"> // Abra a função de página de upload OpenUpload () {var win = window.showmodaldialog ("<%: raiz%>/admin/bookUPLOAD.jsp": "," "Dialogwidth: 300px; if (win! = null) {document.getElementById ("foto_id"). value = win; document.getElementById ("img_id"). src = "<%= root%>/"+win; }} </script> </adhead> <body> <h5> Adicionar livro </h5> <hr/> <p> Capa do livro: <belt> <input type = "hidden" id = "foto_id" name = "photo"/"imagens/noimg.png"> <input typ = "" "onClick =" OpenuPload ()/noimg.png "> <input =" "" "onClick =" "OpenuPLO" id = "img_id" src = "<%= root%>/imagens/noimg.png"> </label> </body> </html> ②Crete a página de imagem de upload, bookupload.jsp
Observe que você deve definir a tag <Sase>. Os dados podem ser retornados ao formulário pai quando a janela do modo atual é fechada. A tag <form> também precisa definir uma propriedade ENCTYPE = "Multipart/Form-Data" para que os arquivos enviados possam ser obtidos pelo plano de fundo. Clique no botão "Upload" para transmitir os arquivos para o plano de fundo. O destaque restante é o processamento de upload em segundo plano.
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gbk"> <meta http-equiv = "Pragma" content = "sem cache"/> <estilo "" color: #ff0000; <H5> Picture Upload </h5> <hr/> <p style = "cor: vermelho"> $ {requestscope.errormsg} </p> <formig id = "form1" name = "form1" action = "<%= root%>/bookServlet? Type = bookUplOad" = "post" 3m! </div> <div> <input type = "file" name = "file_upload"/> </div> <div> <input type = "submit" value = "upload"/> </div> </form> </body> </html> ③crete um servlet comum, apenas alguns dos códigos -chave são fornecidos abaixo
A parte do código vermelho é o código -chave enviado e os outros são usados como enfeites. Conclua essas três etapas e um upload simples será alcançado.
public class BookServlet estende httpServlet {private string uploadPath = "eShop/upload/"; // diretório para fazer upload de arquivos private string temppath = "eshop/uploadtmp/"; // Diretório de arquivos temporário Private String ServerPath = null; private int sizemax = 3; // imagem máxima limite superior private string [] filetype = new string [] {". jpg", ". gif", ". bmp", ". png", ". Public void Doget (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {serverpath = getServletContext (). getRealPath ("/"). substituir ("//", "/"); // execute quando o servlet é inicializado. Se o diretório de arquivos carregado não existir, ele criará automaticamente se (! Novo arquivo (serverPath+uploadPath) .isDirectory ()) {new File (ServerPath+uploadPath) .mkdirs (); } if (! novo arquivo (serverpath+temppath) .isdirectory ()) {new File (serverpath+temppath) .mkdirs (); } <span style = "color: #ff0000;"> diskFileItemFactory Factory = new DiskFileItemFactory (); </span> factory.SetSizEthResHold (5*1024); // Cache máximo Factory.setRepository (novo arquivo (servidorPath+Temppath)); // Diretório de arquivos temporários <span style = "cor: #ff0000;"> servletfileUpload upload = newsetLeatFileUpload (Factory); </span> upload.SetSizemAx (MATEMAX*10242424242; tente {<span style = "color: #ff0000;"> list <FileItem> itens = upload.parsequest (request); </span> // Obtenha toda a lista de arquivos para (fileItem Item: itens) {// obtenha o nome do arquivo, este nome do arquivo inclui o caminho <span style = "color: #ff0000;"> se (! item.getName (). ToLowerCase (); if (filename.endswith (FileType [0]) || filename.endSwith (FileType [1]) || FILENAME.ENDSWITH (FileType [2]) || FILENAME.ENDSWITH (FILETYPE [3]) || FILENAME.ENDSWITH (FILETYPE [4]) || Uuid.randomuuid (). ToString (); filepath = serverpath+uploadPath+uuid+filename.substring (filename.lastindexOf (".")); <span style = "color: #ff0000;"> item.write (novo arquivo (filepath)); </span> printWriter pw = resposta.getWriter (); pw.write ("<cript> alert ('carregado com sucesso'); window.returnValue = '"+uploadPath+uuid+filename.substring (filename.lastindexof ("". pw.flush (); pw.close (); } else {request.setAttribute ("errorMsg", "o upload falhou, confirme que o arquivo carregado existe e é uma imagem!"); request.getRequestDispatcher ("/admin/bookupload.jsp"). Forward (solicitação, resposta); }}}} catch (Exceção e) {e.printStackTrace (); request.setattribute ("errorMsg", "Falha no upload, confirme que o tamanho do arquivo carregado não pode exceder"+sizemax+"m"); request.getRequestDispatcher ("/admin/bookupload.jsp"). Forward (solicitação, resposta); }}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.