Il est faisable, mais, comme Dmitry dit, il ne fonctionne pas sur tous les serveurs. SecurityManager
classe doit être consulté si votre webapp a le privilège d'écrire dans ce dossier. ou vous obtiendrez une exception.
Une façon de le faire est par l'intermédiaire ServletContext
:
URL webAppRoot = this.getServletConfig().getServletContext()
.getResource("/images/new-image.jpg");
Il pointera vers votre ${tomcat}/webapps/mywebapp/images/new-image.jpg
.
Une autre façon est via ProtectionDomain
:
URL runningClassLocation = this.getClass().getProtectionDomain()
.getCodeSource().getLocation();
Mais cela vous donnera très probablement jar:file://...myapp.jar!/my/package/servlet.class
.
Après avoir l'URL, vous le convertissez en File
et ajoutez un chemin d'accès relatif à votre dossier d'images. Je suis d'accord avec Jim, et insiste sur le fait que le faire comme ceci est juste à des fins académiques. Java n'est pas comme PHP donc vous ne devriez pas avoir de dossier uploads
dans le dossier de votre application web. Habituellement, cela est fait en permettant à un utilisateur de niveau administrateur de spécifier un chemin d'accès à un dossier réservé aux besoins de stockage de votre application.
Salut et bienvenue à SO! S'il vous plaît préciser votre question - quel est exactement le problème que vous avez lors de la mise en œuvre de cela? Qu'est-ce qui ne fonctionne pas comme prévu? – akluth
vous ne pouvez pas. Selon le serveur que vous utilisez, le système de fichiers peut ne pas être accessible en écriture ou même disponible pour votre application. Si vous voulez plus de détails, vous devez nous dire quel serveur vous utilisez. –
Cette source n'a aucun problème. Mais je ne veux pas utiliser tout le chemin. J'ai Tomcat 7.0 –