J'ai un Servlet qui fait et retourne un fichier zip Quelque chose comme çamessage après le téléchargement
response.setHeader("Pragma","Public");
response.setHeader("Cache-Control","must-revalidate,post-check=0,pre-check=0");
response.setContentType("application/octet-stream");
response.setHeader("Expires", "0");
response.setHeader("Content-Transfer-Encoding", "binary");
if(file.getName().contains("–")){
response.setHeader("Content-Disposition", "inline; filename=\"file.zip\"");
}
OutputStream os = response.getOutputStream();
ZipOutputStream zos = new ZipOutputStream(os);
for (File f : files) {
//add files, it's working...
}
bis.close();
fis.close();
zos.closeEntry();
}
zos.flush();
zos.close();
os.flush();
os.close();
Actuellement télécharger J'utilise un iframe, donc je mets l'attribut src pour commencer le téléchargement. Les charges de cadre de téléchargement appel lorsque cette fonction
function loadIDownloadFrame(url) {
document.getElementById("idownloadFrame").src=url;
}
Mais maintenant, je dois montrer un message de retour après le fichier zip sans quitter la page en cours. J'ai besoin de savoir si la servlet a retourné le fichier zip.
J'ai essayé d'obtenir le statut iframe avec "window.frames ['idownloadFrame']. Document.readyState", mais toujours status est "complete".
Quelqu'un a des solutions?
Qu'essayez-vous de faire? Tu n'as aucun sens. – feeela
Je dois créer un "téléchargement multiple", j'ai dans un dossier 6000+ fichiers, donc le processus de compression est lent et j'ai besoin de montrer un chargement pendant ... Comment puis-je fermer le chargement? –
@Lucas Merencia: Vous devriez repenser cela, zipper 6k + fichiers synchroniquement va tuer votre serveur (s) sous charge, il suffit de considérer comment la quantité de mémoire (RAM) et/ou réseau IO. Laisser l'utilisateur déclencher un travail et retourner un identifiant de transaction au navigateur, puis utiliser une fonction JS pour déclencher l'état du travail. Si le travail terminé offre un bouton de téléchargement (c'est une description de très haut niveau) ... – home