Olá GUJl,
eu estou utilizando AJAX no meu site, porém no momento de escolher uma imagem e realizar o upload ele esta voltando para a minha página normalmente e não esta lançando nenhuma exceção porém não realiza o upload também.
O que eu poderia fazer ?
AjaxCadastro.jsp
<form action="#" class="formEvento" id="formUpload" ENCTYPE="multipart/form-data">
<div id="caixabotao">
<p>Forneça uma imagem para o seu evento ( < 500kb) </p>
<input type="file" name="arquivo" id="arquivo">
<input class="button" type="button" value="Enviar" onclick="chamarServletUpload('Uploader', 'conteudoAjax', 'Realizando upload...')">
</div>
</form>
No meu javascript:
function realizarUpload(url,div, msg){
if (document.getElementById(div) != null) {
document.getElementById(div).innerHTML = "<div class=\"carregando\"><img ><p>" + msg + "</p></div>";
}
HttpMethod = "POST";
var req = null;
req = getXMLHTTPRequest();
if (req){
req.open(HttpMethod, url, false);
req.setRequestHeader('Content-type', 'multipart/form-data; boundary=AaB03x');
req.send(null);
document.getElementById(div).innerHTML = req.responseText;
}
}
Minha servlet, Uploader.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("DENTRO DO POST UPLOADER");
PrintWriter out = response.getWriter();
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
//definindo o tamanho do arquivo
fileItemFactory.setSizeThreshold(1 * 1024 * 1024); //1 MB
//definindo o tamanho do arquivo
fileItemFactory.setRepository(tmpDir);
ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
try {
// convertendo o request
List items = uploadHandler.parseRequest(request);
Iterator itr = items.iterator();
System.out.println("QUANTIDADE DE ITEMS:" + items.size());
while (itr.hasNext()) {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 1");
FileItem item = (FileItem) itr.next();
//pegando o nome do arquivo que foi feito o upload
String arquivo = item.getName();
request.getSession().setAttribute("imagem", arquivo);
if (item.getSize() <= (1 * 1024 * 512)) {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 2");
if (!item.getName().equals("")) {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 3");
if (item.getContentType().contains("jpeg") || item.getContentType().contains("jpg") || item.getContentType().contains("png") || item.getContentType().contains("bmp")) {
// Write file to the ultimate location.
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 4");
File file = new File(destinationDir, item.getName());
item.write(file);
request.getSession().setAttribute("type", "cxdialogo_sucesso");
request.getSession().setAttribute("message", "<p>- Upload realizado com <strong>sucesso !</strong> </p><p>- Clique na caixa para fechar.</p>");
} else {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 5");
request.getSession().setAttribute("type", "cxdialogo_erro");
request.getSession().setAttribute("message", "<p>- <strong>Apenas</strong> imagens serão aceitas (.jpeg, .jpg, .png ou .bmp) .</p><p>- Clique na caixa para fechar.</p>");
}
} else {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 6");
request.getSession().setAttribute("type", "cxdialogo_erro");
request.getSession().setAttribute("message", "<p>- <strong>Forneça </strong> uma imagem para cadastrar o seu evento</p><p>- Clique na caixa para fechar.</p>");
}
} else {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 7");
request.getSession().setAttribute("type", "cxdialogo_erro");
request.getSession().setAttribute("message", "<p>-Arquivos <strong>maiores que 1 MB </strong> não serão aceitos.</p><p>- Clique na caixa para fechar.</p>");
}
}
System.out.println("ANTES DO FOWARD");
RequestDispatcher rd = null;
rd = request.getRequestDispatcher("/AjaxCadastrarEvento.jsp");
rd.forward(request, response);
} catch (FileUploadException ex) {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 8");
System.out.println(ex.getMessage());
request.getSession().setAttribute("type", "cxdialogo_erro");
request.getSession().setAttribute("message", "<p>- Ocorreu um <strong>erro </strong> com o seu upload, tente novamente. </p><p>- Clique na caixa para fechar.</p>");
} catch (Exception ex) {
System.out.println("AQUIIIIIIIIIIIIIIIIIIIIIIII 9");
request.getSession().setAttribute("type", "cxdialogo_erro");
request.getSession().setAttribute("message", "<p>- Ocorreu um <strong>erro </strong> com o seu upload, tente novamente. </p><p>- Clique na caixa para fechar.</p>");
} finally {
out.close();
}
A saída que tenho é :
INFO: DENTRO DO POST UPLOADER
INFO: QUANTIDADE DE ITEMS:0
INFO: ANTES DO FOWARD
Toda ajuda será bem-vinda, valeu GUJ.
