2010-09-14 4 views
0

J'écris un téléchargement et une fonction de téléchargement, et j'essaye d'avoir deux méthodes pour écrire ou lire dans le même dossier, et j'ai rencontré un problème avec getResourceAsStream. (Le logiciel est exécuté sur GlassFish)Problème avec getResourceAsStream

télécharger: Le téléchargement de la méthode dans ce dossier: /home/phamtn8/glassfishv3/glassfish/domains/domain1/applications/Documents/Documents-war_war/drawings/Liandro.jpg -> excellent travail

télécharger: stream = the above path

input = this.getClass().getResourceAsStream(stream); // Ce return null L'emplacement des fichiers de classe qui contiennent ces méthodes de téléchargement et de téléchargement est le suivant: /home/phamtn8/glassfishv3/glassfish/domains/domain1/applications/Documents/Documents-war_war/WEB-INF/classes/org/xdrawing/web. Si je mets le fichier jpg ici, le getResourceAsStream fonctionne.

REMARQUE: this.getClass.getName() retour org.xdrawing.web.FileName

S'il vous plaît aider !!!

+2

Stockage des choses dans votre classpath est une chose vraiment bizarre et le mal faire. Que se passe-t-il si quelqu'un télécharge un fichier de classe? Ça va être ajouté à votre chemin de classe! Il est préférable de les stocker dans une zone dédiée au stockage de fichiers. –

+0

Merci. Faire maintenant. –

Répondre

7

getResourceAsStream(..) traite les chemins à partir de la racine du chemin de classe. Et le vôtre semble être la racine de la machine. Donc, utilisez new FileInpuStream(fullPath) à la place. En fait, il existe une autre méthode getResourceAsStream qui appartient à la ServletContext. Il traite les chemins à partir de la racine de l'application Web et convient mieux aux applications Web. Mais la meilleure pratique avec les téléchargements de fichiers et de téléchargements est de les stocker dans un endroit totalement différent de votre application web - disons /home/appname/uploads, de sorte que vous puissiez déployer et annuler le déploiement de l'application web sans perdre des données. Vous aurez juste besoin d'une option de configuration (un <context-param> dans web.xml par exemple) qui pointe vers l'emplacement absolu des téléchargements et d'utiliser l'approche FileInputStream (ou OutputStream respectivement)

+0

génial. merci +1 –