Originalmente, eu queria usar AJAX para fazer upload de arquivos sem atualizar, mas depois descobri que não era fácil de implementar. Depois de pesquisar on-line por um longo tempo, finalmente encontrei uma implementação "pseudo-AJAX". leitores.
Primeiro precisamos de um arquivo HTML ou JSP carregado, como segue:
<FORM METHOD="POST" ACTION="../servlet/FileUploadServlet" enctype="multipart/form-data" target="hidden_frame" onSubmit="showmsg();" style="margin:0;padding:0" >
<input type="file" name="sfile" style="width:450">
<input type="hidden" name="act" value="upload">
<INPUT type="submit" value="Carregar arquivo"><span id="msg"></span>
<br>
<font color="red">Suporta upload de arquivos JPG, JPEG, GIF, BMP, SWF, RMVB, RM, AVI</font>
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
</form>
Entre eles, o atributo TARGET do FORM [b] é muito importante [/b]. Envie a AÇÃO do FORM para um IFRAME oculto para execução e, em seguida, preencha a operação no MSG ao retornar. segue:
public void doPost (solicitação HttpServletRequest, resposta HttpServletResponse)
lança IOException, ServletException{
PrintWriter out = resposta.getWriter();
resposta.setCharacterEncoding("utf-8");
resposta.setHeader("Conjunto de caracteres","utf-8");
response.setHeader("Cache-Control", "no-cache");
String filepath="",msg="",ext="";
SmartUpload su = new SmartUpload();
booleano succ = verdadeiro;
. . . . . .
tentar{
su.initialize(getServletConfig(),solicitação,resposta);
su.setMaxFileSize(102400000);
su.setTotalMaxFileSize(102400000);
su.setAllowedFilesList(mediaExt+","+flashExt+","+imgExt);
su.setDeniedFilesList("exe,bat,,");
su.upload();
para (int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File arquivo = su.getFiles().getFile(i);
if (file.isMissing()) continuar;
String fileName=UploadFileUtils.returnRandomFileName(file.getFileExt());
ext=file.getFileExt().toLowerCase();
. . . . . . . . . . .
msg="<a href="#">Envio realizado com sucesso!</a>";
}
}catch(SmartUploadException processa){
succ=falso;
msg="<font color=red>Falha no upload: verifique a extensão ou o tamanho do arquivo!</font>";
}catch(Exceção ex){
succ=falso;
msg="<font color=red>Falha no upload: verifique a extensão ou o tamanho do arquivo!</font>";
ex.printStackTrace();
}
msg=Escape.escape(msg);
se (sucesso)
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');parent.backCallIframe('"+Escape.escape(ext)+"','"+Escape. escape(caminhodoarquivo)+"')");
outro
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');");
out.close();
}