[RESOLVIDO] Upload de um formulário com imagem

4 respostas
marcos.9306

Tenho um formulário onde cadastro os dados de um produto, neste formulário existe um campo para imagem.

Eu até consegui enviar a imagem sozinha, mas não consigo upar os outros dados e vice-versa. Ou um ou outro.

Percebi que isso acontece quando eu ponho enctype=“multipart/form-data” na tag …

Pra fazer o upload estou usando o FileUploader da Jakarta. Já revirei a documentação e nada :frowning:

Alguém tem alguma idéia?

4 Respostas

J

mande seu código pra darmos uma olhada…
é mais fácil do que vc imagina usar o commons.fileupload do projeto jakarta :wink:

[]'s

http://commons.apache.org/fileupload/using.html

marcos.9306

Segue o trecho da página onde tem o formulário:

<form enctype="multipart/form-data" method="post" action="product?action=add">
<fieldset>
<legend>Novo produto</legend>
<label for="name">Nome: </label><input type="text" name="name" id="name" size="30"><br>
<label for="desc">Descrição: </label><input type="text" name="desc" id="desc" size="70"><br>
<label for="categories">Categoria: </label>
<select name="categories" id="categories">
<option value="1">Filtros Pequenos</option>
<option value="2">Suportes</option>
<option value="3">Bebidas</option>
</select><br>
<label for="price">Preço: </label><input type="text" name="price" id="price"><br>
<label>Imagem:</label><input type="file"><br>
<input id="inner_right" type="submit" value="Aplicar"><input id="inner_right" type="reset" value="Limpar">
</fieldset>
</form>

esse é o trecho do meu servlet que tenta pegar a request

boolean isMultipart = FileUpload.isMultipartContent(request);
                
                if(isMultipart) {

                    FileItemFactory factory = new DiskFileItemFactory();
                    ServletFileUpload upload = new ServletFileUpload(factory);
                    List itens = upload.parseRequest(request);
                    Iterator iter = itens.iterator();
                    
                    while(iter.hasNext()) {
                        FileItem item = (FileItem) iter.next();
                        
                        if(item.isFormField()) {
                            out.println("não é arquivo!");
                        }
                        else {
                            out.println("é arquivo!");
                        }
                    }
                }
J

então…
ai onde for arquivos vc faz assim:

File uploadedFile = new File("nomeDoArquivo");
item.write(uploadedFile);

e onde não for:

String field = item.getFieldName();
String value = item.getString();

[]'s

marcos.9306

opa!

valeu pela atenção! mesmo!

só um problema: ele reconhece os campos agora(nome,desc etc), mas mesmo quando mando upar um arquivo ele não chega a imprimir o “é um arquivo” :?

de qualquer forma já me ajudou bastante!

valeu mesmo!

[EDIT]

era só colocar uma name e um id na input do file, agora funcino que é uma beleza!!

Criado 9 de dezembro de 2009
Ultima resposta 9 de dez. de 2009
Respostas 4
Participantes 2