UPload de arquivos usando ajax!

2 respostas
S

Alguenm sabe como eu posso fazer upload de arquivos usando Ajax?

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