Galera to fazendo um upload de arquivo com struts e to usando a classe formFile deles. A questao eh, como faco para salvar este arquivo no meu disco? Eh uma duvida basica mas eu nao to conseguindo. Quem souber pode postar o exemplo aqui?
<%@pageimport="org.apache.commons.fileupload.*"%><%@pageimport="java.util.List"%><%@pageimport="java.io.File"%><%@pageimport="java.util.Iterator"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>recebearquivo</title></head><body>recebearquivo<br><%// first check if the upload request coming in is a multipart requestbooleanisMultipart=FileUpload.isMultipartContent(request);DiskFileUploadupload=newDiskFileUpload();upload.setSizeMax(1024*1024*3);// 3 Mb// parse this request by the handler// this gives us a list of items from the requestListitems=upload.parseRequest(request);Iteratoritr=items.iterator();while(itr.hasNext()){FileItemitem=(FileItem)itr.next();// check if the current item not is a form field or an uploaded fileif(!item.isFormField()){// the item must be an uploaded file save it to disk. Note that there// seems to be a bug in item.getName() as it returns the full path on// the client's machine for the uploaded file name, instead of the file// name only. To overcome that, I have used a workaround using// fullFile.getName().FilefullFile=newFile(item.getName());Stringnome=fullFile.getName();//pega o nome do arquivoStringextensao=nome.substring(nome.length()-3,nome.length());//pega a estenção do arquivoout.println(nome+"<br>");out.println(extensao+"<br>");if(extensao.equalsIgnoreCase("JPG")){//só envia se for JPGFilesavedFile=newFile(getServletContext().getRealPath("/anexos/"),fullFile.getName());item.write(savedFile);out.println("Enviado.");}else{out.println("Não enviado. Use apenas JPG");}}}%></body></html>
Jaison
Olá marceloplis, eu coloquei esse código pra rodar, mas quando seleciono um arquivo .JPG (como o código indica) e clico em enviar, da um erro:
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
Obrigado!
J
jlunge
Descupa, atualizei a tela e a msg foi enviada novamente!
M
marceloplis
Desculpe-me. mas preciso ser sincero. não faço a menor idéia de que erro é esse !!!
Não tem alguém que saiba que erro é esse pra ajudar nosso amigo ???
Valew galera !!!
E
edneyimme
Envia o projeto da dar uma olhada. O projeto inteiro.
M
marceloplis
O anexo anterior já é o projeto_exemplo inteiro, mas por desencargo de consciencia estou anexando novamente.
E
edneyimme
A noite em casa eu vejo e te respondo. blz
J
julianostr
Taí um exemplo que lê da base o conteúdo de um campo LONG_RAW (Oracle) e gera um arquivo .JPG que representa a figura salva anteriormente.
ObjectobjImage=<campoLONG_RAWdabasequecontémafigura>;if(objImage!=null){byte[]arrayImage=(byte[])objImage;StringpathTmp="\img\tmp";StringfileName=pathTmp+"\<aplicacao>"+System.currentTimeMillis()+".jpg";Stringpath=request.getSession().getServletContext().getRealPath("<um diretório acima do de imagens>");Filedir=newFile(path+pathTmp);if(!dir.exists()){dir.mkdir();}OutputStreambos=newFileOutputStream(path+fileName);bos.write(stream,0,stream.length);bos.close();}
E
edneyimme
Isso ai Juliano.
Vamos, mostra o que voce sabe.
K
kubanacan
Vcs estão utilozando o código do marceloplis ?? caso não… post o cod de vcs para avaliar! eu uso em Struts e tudo funciona normal aki…
abraços
R
Rameee
Provavelmente vc6 devem estar usando a última versão do commons file upload, a 1.2 (commons-fileupload-1.2)
Ele necessita de outro package, o commons-io-1.2.
Baixa, coloca na lib esses 2 Jars e restarta a aplicação.