2010-05-16 19 views
11

ottengo l'eccezione: "schema URI non è FILE"schema URI non è "file"

Quello che sto facendo sta cercando di ottenere il nome di un file e quindi salvare il file (da un altro server) su il mio computer/server dall'interno di un servlet.

ho una stringa denominata "url", da essa qui è il mio codice:

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 linea che causa l'errore è questo:

File fileFromUri = new File(fileUri);     

ho aggiunto il resto del codice in modo da poter vedere quello che sto cercando di fare.

risposta

25

Lo "schema" URI è la cosa che precede il ":", ad esempio "http" in "http://stackoverflow.com".

Il messaggio di errore sta dicendo che new File(fileUri) funziona solo su "file:" URI (quelli che si riferiscono a un percorso sul sistema corrente), non altri schemi come "http".

In sostanza, l'URI "file:" è un altro modo per specificare un percorso per la classe File. Non è un modo magico per dire a File di usare http per recuperare un file dal web.

3

L'ipotesi di creare File da URL è errata qui.

Semplicemente non è necessario creare un File dall'URL al file in Internet, in modo da ottenere il nome del file.

Si può semplicemente fare questo con l'analisi del URL del genere:

URL fileUri = new URL("http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/domefisheye/ladybug/fish4.jpg");  
int startIndex = fileUri.toString().lastIndexOf('/'); 
String fileName = fileUri.toString().substring(startIndex + 1); 
System.out.println(fileName); 
+0

Grazie questo è anche molto utile. – Ankur

Problemi correlati