télécharger le fichier zip à l'aide de java?
Je suis téléchargez le fichier zip de du serveur web à l'aide de Java mais de toute façon je suis perdant sur 2kb dans chaque fichier. Je ne sais pas pourquoi, car même code fonctionne très bien avec d'autres formats, e.g, texte, mp3 et plus.
toute aide est appréciée?
voici mon code.
public void download_zip_file(String save_to) {
try {
URLConnection conn = this.url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("content-type", "binary/data");
InputStream in = conn.getInputStream();
FileOutputStream out = new FileOutputStream(save_to + "tmp.zip");
byte[] b = new byte[1024];
int count;
while ((count = in.read(b)) > 0) {
out.write(b, 0, count);
}
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Vous avez le plein contrôle sur le serveur où le fichier zip est hébergé? Cela fonctionne si vous téléchargez le fichier zip en utilisant un navigateur standard?
Je n'ai pas accès au serveur web, mais il fonctionne très bien sur le navigateur. J'ai changé d'agent utilisateur et tout a bien fonctionné.
Drat, j'aurais suggéré exactement que, dans une réponse lorsque vous confirme que cela fonctionne très bien dans un navigateur 🙂 Le
J'ai le même problème. Mes fichiers zip corrompus quand je l'ai télécharger à l'aide de Java, mais le navigateur web fonctionne très bien. Quelle est la ligne de code qui indique à l'agent utilisateur que j'ai besoin de l'ajouter ?
bien sûr, le code en question est faux, sinon l'OP n'aurait pas posé une question sur le problème avec le code. Vous feriez mieux de ne pas résoudre le problème directement en cause, car cela invaliderait la question concrète. Au lieu de cela il vous suffit de poster une réponse qui concrètement des réponses au problème en question. C'est là un Débordement de Pile est tout au sujet.
Je n'ai pas accès au serveur web, mais il fonctionne très bien sur le navigateur. J'ai changé d'agent utilisateur et tout a bien fonctionné.
Drat, j'aurais suggéré exactement que, dans une réponse lorsque vous confirme que cela fonctionne très bien dans un navigateur 🙂 Le
setDoOutput(true)
par la voie établit implicitement la méthode de requête à la POSTE. Normalement, vous ne voulez pas l'utiliser pur pour les téléchargements de fichiers. Certains serveurs refusent le téléchargement lorsque demandé par POST au lieu de GET.J'ai le même problème. Mes fichiers zip corrompus quand je l'ai télécharger à l'aide de Java, mais le navigateur web fonctionne très bien. Quelle est la ligne de code qui indique à l'agent utilisateur que j'ai besoin de l'ajouter ?
bien sûr, le code en question est faux, sinon l'OP n'aurait pas posé une question sur le problème avec le code. Vous feriez mieux de ne pas résoudre le problème directement en cause, car cela invaliderait la question concrète. Au lieu de cela il vous suffit de poster une réponse qui concrètement des réponses au problème en question. C'est là un Débordement de Pile est tout au sujet.
OriginalL'auteur Mohamed | 2010-04-16
Vous devez vous connecter pour publier un commentaire.
Il devrait être comme ci-dessous:
in.read
pouvez retourner0
.Ne serait pas question. Si elle retourne 0, alors il n'y a tout simplement rien à écrire et donc pas besoin de l'écrire.
Oui, c'est important. -1 doit interrompre la boucle et rien d'autre.
Je suis d'accord avec zockman. 0 signifie qu'il n'y a rien à écrire sur cette itération, il n'y a rien à écrire.
OriginalL'auteur Skip Head
Mettre un
out.flush()
juste après le "while ((count = in.read(b)) > 0) {...}
" et avant leout.close()
.OriginalL'auteur Ray
Essayez de supprimer les lignes:
OriginalL'auteur Maurice Perry
J'ai eu un problème avec le téléchargement des fichiers zip de http une fois que cela s'est avéré être que mon téléchargement des en-têtes http dans leur début, mais qui a fait mes fichiers un peu plus grand pas de plus petit, de sorte que vous n'avez probablement pas ce problème.
Comme une note de côté, vous pourriez envisager d'utiliser Apache Commons Net pour télécharger les apps, c'est vraiment génial.
OriginalL'auteur Bozhidar Batsov
Il y A quelques années je me souviens en cours d'exécution dans un problème avec une vieille version de Tomcat (5.5.25 pour mémoire) qui serait la cause de largish téléchargements pour être tronqué. Nous avons corrigé ce par la mise à niveau vers une 5.5.27. Je me rappel aussi le même problème a été trouvé et corrigé dans un début de Tomcat 6.0 release.
Si cela sonne les cloches pour vous, jetez un oeil à l'Tomcat journaux du changement.
OriginalL'auteur Stephen C
Uniquement les fichiers zip, hein? Très bizarre. Est-ce à partir de n'importe quel serveur, ou tout simplement ce que c'est? Si vous renommez le fichier (changement d'extension) obtenez-vous le même problème? Quels octets sont manquantes? Êtes-vous sûr que c'est la dernière 2K octets et non pas un morceau à partir du milieu/etc... ?
eh bien, c'est bizarre, je ne vois pas un commentaire à cet effet n'importe où dans cette rubrique...
OriginalL'auteur Kevin Day