Au départ, je voulais utiliser AJAX pour télécharger des fichiers sans actualiser, mais j'ai découvert plus tard que ce n'était pas facile à mettre en œuvre. Après une longue recherche en ligne, j'ai finalement trouvé une implémentation "pseudo-AJAX". Maintenant, je vais publier mon code actuel. lecteurs.
Nous avons d’abord besoin d’un fichier HTML ou JSP téléchargé, comme suit :
<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="Télécharger le fichier"><span id="msg"></span>
<br>
<font color="red">Prend en charge le téléchargement de fichiers JPG, JPEG, GIF, BMP, SWF, RMVB, RM, AVI</font>
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
</form>
Parmi eux, l'attribut TARGET de FORM [b] est très important [/b]. Soumettez l'ACTION de FORM à un IFRAME caché pour exécution, puis remplissez l'opération dans le MSG lors du retour. Le code similaire de SERVLET est le suivant. suit :
public void doPost (demande HttpServletRequest, réponse HttpServletResponse)
lance IOException, ServletException{
PrintWriter out = réponse.getWriter();
réponse.setCharacterEncoding("utf-8");
réponse.setHeader("Charset", "utf-8");
réponse.setHeader("Cache-Control", "no-cache");
String filepath="",msg="",ext="";
SmartUpload su = nouveau SmartUpload();
booléen succ=true ;
. . . . . .
essayer{
su.initialize(getServletConfig(),request,response);
su.setMaxFileSize(102400000);
su.setTotalMaxFileSize(102400000);
su.setAllowedFilesList(mediaExt+","+flashExt+","+imgExt);
su.setDeniedFilesList("exe,bat,,");
su.upload();
pour (int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File file = su.getFiles().getFile(i);
if (file.isMissing()) continue ;
String fileName=UploadFileUtils.returnRandomFileName(file.getFileExt());
ext=file.getFileExt().toLowerCase();
. . . . . . . . . . .
msg="<a href="#">Téléchargement réussi !</a>";
}
}catch(SmartUploadException poursuivre){
succ=faux;
msg="<font color=red>Échec du téléchargement : veuillez vérifier l'extension ou la taille du fichier !</font>";
}catch(Exception ex){
succ=faux;
msg="<font color=red>Échec du téléchargement : veuillez vérifier l'extension ou la taille du fichier !</font>";
ex.printStackTrace();
}
msg=Escape.escape(msg);
si (succès)
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');parent.backCallIframe('"+Escape.escape(ext)+"','"+Escape. escape(chemin du fichier)+"')");
autre
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');");
out.close();
}