Avant que quelqu'un le dit: "Duplicate", je veux juste m'assurer que les gens savent que j'ai déjà examiné ces questions:
1) utilise angulaire et PHP, pas sûr de ce qui se passe ici (je n'ai pas t savoir PHP): télécharger le fichier zip et déclencheur La boîte de dialogue "Enregistrer le fichier" à partir de la méthode angulaire p>
2) Impossible d'obtenir cette réponse pour faire quoi que ce soit: Comment télécharger un fichier zip à l'aide d'angulaire p>
3) Cette personne peut déjà télécharger, qui est déjà passé le point que je suis essayer de comprendre: Télécharger le fichier zip externe de angulaire déclenchée sur un bouton Action P>
4) Pas de réponse pour celui-ci: du serveur nodejs p>
5) Je ne sais pas quelle langue est-elle même: https://stackoverflow.com/questions/35596764/zip-file-download-utilisateur- Angularjs-Directive P>
Compte tenu de ces questions fortes>, si cela reste un duplicata, je m'excuse. Voici, encore une autre version de cette question. P> Mon client angulaire 1.5.x me donne une liste de titres, dont chacun dispose d'un fichier associé. Mon nœud 4.x / Express 4.x Server prend cette liste, obtient les emplacements de fichiers, crée un fichier ZIP, à l'aide de SPRP-ZIP à partir de NPM, puis des flux qui figurent dans la réponse. Je souhaite ensuite que mon client initie l'option "Télécharger un fichier" du navigateur. p> voici mon code client (angulaire 1.5.x): p> nœud (4.x) code avec express-zip em >, https://www.npmjs.com/package/express-zip : Exception: {"description":"Access is denied...<stack trace>}
4 Réponses :
J'ai mis à jour mon BulkTownload code> pour utiliser
$ window.open (...) code> au lieu de
$ http.get (...) code >:
function bulkdownload(titles){
titles = titles || [];
if ( titles.length > 0 ) {
var url = '/query/bulkdownload?';
var len = titles.length;
for ( var ii = 0; ii < len; ii++ ) {
url = url + 'titles=' + titles[ii];
if ( ii < len-1 ) {
url = url + '&';
}
}
$window.open(url);
}
};
var zip_file_path = "" //put inside "" your path with file.zip var zip_file_name = "" //put inside "" file name or something var a = document.createElement("a"); document.body.appendChild(a); a.style = "display: none"; a.href = zip_file_path; a.download = zip_file_name; a.click(); document.body.removeChild(a);
Le fichier zip ne dispose pas du nom de fichier zip. Comment pouvons-nous faire le fichier zip prendre ce nom 'zip File_Name'?
Comme indiqué dans Cette réponse , i ont utilisé la fonction JavaScript ci-dessous et je suis maintenant capable de télécharger le contenu fonction pour convertir le flux de tableau d'octets (type de chaîne) à l'objet BLOB: P> byte [] code> le contenu avec succès.
byte[] myByteArray = /*generate your zip file and convert into byte array*/ new byte[]();
return new ResponseEntity<byte[]>(myByteArray , headers, HttpStatus.OK);
Utilisez celui-ci:
var url="YOUR ZIP URL HERE"; window.open(url, '_blank');
Alors, que se passe-t-il? A quel moment fait-il échouer? Avez-vous par hasard avoir un bloqueur pop-up?
Y a-t-il une erreur? Pouvez-vous télécharger le fichier si vous tapez l'URL
http: // localhost / requête / bulkdownload? Titres = 123 code> manuellement?
Oh tirer! Désolé, laissez-moi mettre à jour cela.
Roland Starke: Le navigateur semble juste tourner lorsque je le fais, mais éventuellement, oui, il a renvoyé un _tmp_zipfile.zip! Cependant, j'ai débogué le code du serveur et je reçois la bonne gamme de titres, les emplacements de fichiers, et il est injecté dans le resp.zip correctement, jusqu'à présent, je pouvais dire à une série de console.logs.
Roland, je reçois toujours l'erreur refusée. Ajout de console.log Affiche les 2 paramètres d'entrée pour le rappel attendu pour REEP.ZIP, qui, selon leur API, n'est pas nécessaire: github.com/thrackle/express-zip/blob/master/lib/express-zip. JS et ces valeurs étaient" null 4838 "que j'attends.
Peut-être que c'est-à-dire gère des blobs comme origine croisée? Vous pouvez sauter que tout cela ajax blob STUP Si vous venez d'ouvrir l'URL directement comme
window.open ('/ requête / bulkdowlload? title = xxx'); code> mais comme idbevishold a dit que peut-être être bloqué à cause de la pupup bloqueurs. Voici quelques façons de le faire: Stackoverflow.com/questions/11620698/...