Upload de arquivo / enctype="multpart/form-data"

7 respostas
luuu

olá
tenho um formulario de cadastro , em que voce preenche nome , endereco , telefone , etc . e escolhe uma foto para upload
nesse form ele envia para um servlet
so que com o enctype=“multpart/form-data” ele pega os valores request.getParameter

como posso resolver esse problema?

7 Respostas

Anderson_Leite

Existe um pacote da oreilly para ajudar nisso.

Esse link vai te ajudar.
http://servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html

Baixe o jar e utilize a classe MultipartRequest para fazer o upload da foto.

Se for usar manda para um banco de dados é interessante ver também a classe MultipartParser.

Tomara que ajude.
Abraços

dreamspeaker

O Commons Fileupload tbém é legal.

luuu

entao

eu tentei usar o commons file uploader

vou deixar uma parte do codigo aqui
ele nao entra no primeiro if pra verificar se tem algum upload de arquivo vindo do formulario

String site = "";
        String caminhoTemp = "/fotos";
        String pasta = "/fotos";

        if (FileUpload.isMultipartContent(request)){ 
            DiskFileUpload upload = new DiskFileUpload(); 
            upload.setRepositoryPath(caminhoTemp); 
            //out.print("if");
            try{ 
                List items = upload.parseRequest(request); 
                Iterator iter = items.iterator(); 
                while (iter.hasNext()) { 
                    FileItem item = (FileItem) iter.next(); 
                    if (!item.isFormField()) { 

                        String nome=item.getName().toString(); 
                        String nomeArquivo=nome.substring(nome.lastIndexOf("\\")+1); 

                        out.write("nome do arquivo: " + nomeArquivo + "<br>"); 
                        out.write("Arquivo(s)<b> " +item.getName() +"</b> transferido(s)<br>"); 

                        File arquivo=new File(pasta+nomeArquivo); 
                        item.write(arquivo); 
                        out.write("Clique <a href=/teste/upload/"+ nomeArquivo +">Aqui</a>. Para ver o resultado do upload"); 
                    } 
                } 
            }
            catch(FileUploadException e){ 
                out.write("Não foi possível efetivar o upload do arquivo - segue a causa do erro" + "<br>" + e.getMessage()); 
                e.printStackTrace(); 
            }
            catch(Exception e){
                out.write("Não foi possível efetivar o upload do arquivo - segue a causa do erro" + "<br>" + e.getMessage()); 
                e.printStackTrace();
            }
        } 

    

        
        
    

        /* ____________________________________________________________________
         *|                  UPLOAD FOTO                                       |
         * --------------------------------------------------------------------|
         */
    
        paciente.setResponsavelNome(request.getParameter("responsavelNome"));
        paciente.setResponsavelCPF(request.getParameter("responsavelCpf"));
        paciente.setResponsavelRg(request.getParameter("responsavelRg"));

e o formulario esta com o enctype="multpart/form-data"

luuu

ah esqueci no formulario coloquei “multpart/form-data” em vez de “multipart/form-data”

mas agora os valores tao vindo como null

como resolver?

luuu

bom consegui
usei o commons file

dexei qdo for FILE do jeito que tava
e se nao for FormField
ele pega por item.getString()

so que ele nao esta me retornando o ultimo campo . pq sera?

luuu

consegui resolver o problema
valeu quem ajudou :smiley:

thiago.limma

luzeras:
bom consegui
usei o commons file

dexei qdo for FILE do jeito que tava
e se nao for FormField
ele pega por item.getString()

so que ele nao esta me retornando o ultimo campo . pq sera?

Fala brother, tudo bem?

Estou desenvolvendo uma aplicação e estou com o problema que vc teve. Quando dou um getParameter, ele tá vindo null.

Como vc resolveu seu problema?

Segue meu código

<input type="file" id="idArquivoUpload" value="#{uploadBean.file}"/>

	
	public void saveUpload() throws BusinessException, IOException
	{

		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
	
		// Captura o arquivo que foi selecionado na tela via request. 
		File file = new File(request.getParameter("idArquivoUpload"));
		
		servidor.setFoto(geraBlob(file));
		
		try
		{
			// Salva a foto do servidor 
			servidorFacade.save(servidor);
		} catch (BusinessException e) {
			
			throw new BusinessException(e);
		}
	}
Criado 24 de outubro de 2006
Ultima resposta 14 de abr. de 2009
Respostas 7
Participantes 4