2010-05-16 23 views
11

otrzymuję wyjątek: „schemat URI nie jest plik”schemat URI nie jest „plik”

Co robię stara się uzyskać nazwę pliku, a następnie zapisać ten plik (z innego serwera) na mój komputer/serwer z serwletu.

Mam String o nazwie „url”, od niej tutaj jest mój kod:

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)); 
} 

Linia przyczyną błędu jest to jedno:

File fileFromUri = new File(fileUri);     

Dodałem reszty kod, dzięki czemu możesz zobaczyć, co próbuję zrobić.

Odpowiedz

25

URI „system” jest rzeczą, która przychodzi przed „:”, na przykład „http” na „http://stackoverflow.com”.

Komunikat o błędzie informuje, że new File(fileUri) działa tylko w przypadku identyfikatorów URI pliku "file:" (odnoszących się do nazwy ścieżki w bieżącym systemie), a nie innych schematów, takich jak "http".

Zasadniczo, „file:” URI jest kolejnym sposobem określania ścieżki do klasy File. Nie jest to magiczny sposób informowania, że ​​można użyć protokołu http do pobrania pliku z Internetu.

3

Twoje założenie stworzyć File z URL jest tu nie tak.

Po prostu nie trzeba tworzyć File z URL do pliku w Internecie, aby uzyskać nazwę pliku.

Można po prostu zrobić to z parsowania URL tak:

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

Dzięki Jest to również bardzo pomocne. – Ankur

Powiązane problemy