Le schéma d'URI n'est pas "fichier"
- Je obtenir de l'exception: "schéma d'URI n'est pas un fichier"
Ce que je suis en train de faire est d'essayer d'obtenir le nom d'un fichier, puis enregistrez ce fichier (à partir d'un autre serveur) sur mon ordinateur/serveur à partir d'une servlet.
J'ai une Chaîne de caractères appelée "url", à partir de ce point, voici mon code:
url = Streams.asString(stream); //gets the URL from a form on a webpage
System.out.println("This is the URL: "+url);
URI fileUri = new URI(url);
File fileFromUri = new File(fileUri);
onlyFile = fileFromUri.getName();
URL fileUrl = new URL(url);
InputStream imageStream = fileUrl.openStream();
String fileLoc2 = getServletContext().getRealPath("pics/"+onlyFile);
File newFolder = new File(getServletContext().getRealPath("pics"));
if(!newFolder.exists()){
newFolder.mkdir();
}
IOUtils.copy(imageStream, new FileOutputStream("pics/"+onlyFile));
}
La ligne d'origine de l'erreur est celle-ci:
File fileFromUri = new File(fileUri);
J'ai ajouté le reste du code, de sorte que vous pouvez voir ce que je suis en train de faire.
source d'informationauteur Ankur
Vous devez vous connecter pour publier un commentaire.
L'URI "régime" est la chose qui vient avant le ":", par exemple "http" dans "http://stackoverflow.com".
Le message d'erreur est vous dire que
new File(fileUri)
ne fonctionne que sur "fichier:" URI (ceux se référant à un chemin sur le système actuel), et non à d'autres programmes comme le "http".Fondamentalement, le "fichier:" URI est une autre façon de spécifier un chemin d'accès à la
File
classe. Il n'est pas de la magie la façon de raconterFile
utiliser http pour récupérer un fichier à partir du web.Votre hypothèse pour créer
File
deURL
est le problème ici.Vous n'avez pas besoin de créer un
File
à partir de l'URL du fichier dans l'Internet, de sorte que vous obtenez le nom du fichier.Vous pouvez simplement le faire avec l'analyse de l'URL comme ça: