Alguenm sabe como eu posso fazer upload de arquivos usando Ajax?
UPload de arquivos usando ajax!
S
2 Respostas
R
cara,
eu uso dojo para requisitar uma servlet… faço aquele lance de encripted multipart no form…
e aí uso commons fileupload na servlet… o meu codigo ficou assim no service da servlet:
boolean isMultipart = FileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a new file upload handler
DiskFileUpload upload = new DiskFileUpload();
// Set upload parameters
upload.setSizeMax(50*1024*1024); //50Mb
upload.setRepositoryPath(request.getRealPath(""));//("c:/");
// Parse the request
List items= null;
try {
items = upload.parseRequest(request);
// pega campos da tela que invocou a Servlet
Iterator itAux = items.iterator();
while (itAux.hasNext()) {
FileItem fitem = (FileItem) itAux.next();
if (fitem.getFieldName().equalsIgnoreCase("autor")) {
autor = fitem.getString().replace(" ","_");
autor = Utilidades.eliminaAcentuacao(autor);
} else if (fitem.getFieldName().equalsIgnoreCase("cmd")) {
cmd = fitem.getString();
} else if (fitem.getFieldName().equalsIgnoreCase("cod")) {
cod = fitem.getString();
}
}
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem fitem = (FileItem) it.next();
if (!fitem.isFormField()) {
String nomeArq = fitem.getName().substring(fitem.getName().lastIndexOf("\\")+1);
fitem.write(new File(request.getRealPath("")+"\\fotos\\"+nomeArq));
System.out.println(fitem.getName() +"-"+ fitem.getSize() +"bytes");
NgcAutor.atualizaFoto(cod, nomeArq);
}
}
proximo = "ServletControle?cmd=verautor&cod="+cod;
request.getSession().removeAttribute("erroLoad");
} catch (FileUploadException e) {
e.printStackTrace();
request.getSession().setAttribute("erroLoad", "Tamanho do Arquivo maior que o Permitido!");
} catch (Exception e) {
e.printStackTrace();
request.getSession().setAttribute("erroLoad", e.getMessage());
}finally{
try {
try {
request.getRequestDispatcher(proximo).forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
[]'s
R
o bloco while que ta marcado com o comentário
// pega campos da tela que invocou a Servlet
foi feito somente pra mostrar como pega campos normais da tela…
pq, quando usamos esse multpart, os campos que não são file não aparecem no request…
aí, tem que fazer esse parser!!!
[]'s
Criado 10 de julho de 2006
Ultima resposta 10 de jul. de 2006
Respostas 2
Participantes 2