O erro, q as vezes dá, é esse:
org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:359)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at equus.news.controle.imagens.UploadImagem.execute(UploadImagem.java:51)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java: 58 )
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
…
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:964)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:887)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:94)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:64)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:354)
... 27 more
Eu já li e reli minha Action q faz o upload e não tem motivos para isso… segue ela:
package equus.news.controle.imagens;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import equus.news.modelo.Cliente;
import equus.news.utils.url.ObjetoURL;
public class UploadImagem extends Action {
private String caminho = null;
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
String node = req.getParameter("node");
if (node.equals("") || node == null || node.equalsIgnoreCase("clienteSessao")) {
Cliente cliente = (Cliente)req.getSession().getAttribute("clienteDaSessao");
caminho = req.getSession().getServletContext().getRealPath("/imagens/") + "/" + cliente.getId() + "/";
} else {
caminho = req.getSession().getServletContext().getRealPath("/imagens/") + "/" + node + "/";
}
boolean isMultiPart = ServletFileUpload.isMultipartContent(req);
if (isMultiPart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(req);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
if (item.getName().length() > 0) {
this.inserirImagemDiretorio(item);
req.setAttribute("msg", "Ok, Upload terminado.");
}
}
}
}
catch (FileUploadException e) {
e.printStackTrace();
req.setAttribute("msg", "Erro, Processo falhou.(1)");
}
catch (Exception e) {
e.printStackTrace();
req.setAttribute("msg", "Erro, Processo falhou.(2)");
}
}
return map.findForward("ajax");
}
private void inserirImagemDiretorio(FileItem item) throws IOException {
File diretorio = new File(caminho);
if (!diretorio.exists()) {
diretorio.mkdir();
}
String nome = item.getName();
String arq[] = nome.split("\\\\");
for (int i = 0; i < arq.length; i++) {
nome = arq[i];
}
File file = new File(diretorio, ObjetoURL.removeAcentos(ObjetoURL.decode(nome)));
FileOutputStream output = new FileOutputStream(file);
InputStream is = item.getInputStream();
byte[] buffer = new byte[2048];
int nLidos;
while ((nLidos = is.read(buffer)) >= 0) {
output.write(buffer, 0, nLidos);
}
output.flush();
output.close();
}
}
Se eu continuo tentando fazer o upload ela funciona e para de funcionar “aleatoriamente”… digo aleatoriamente pq ainda naum descobri o real motivo.
Muito obrigado pessoal…
