Upload souboru na server
Nazdar,
mám tento problém: Aplikace je napsaná v javě (jsp), běží na Unixovém serveru a já se k ní připojím z Windows. Aplikace umožňuje upload souboru do DB. Jspéčko obsahuje formulář s tlačítkem Procházet, po kliknutí na něj se otevře okno, ve kterém procházím HD, vyberu soubor a název souboru (vč. cesty) se uloží do textinputu.
Handler pak příslušný soubor najde na HD, načte a nacpe do DB vč. cesty k souboru. Toto funguje. Pokud aplikace běží na Windows, pak se do DB uloží jen název souboru bez cesty a vše je OK. Běží-li na Unixu, uloží se i s cestou a pak jsou problémy při downloadu - systém nabízí uložení pod názvem v DB, který je v tomto případě něco jako C:\\... s čímž si Unix neporadí.
Kód handleru, který ukládá název do DB vypadá takto:
FileItem item = checkFileItem(index);
System.out.println("item.get Name(): " + item.getName());
File file = new File(item.getName());
System.out.println("file.getName(): " + file.getName());
Vypíše se:
název soubor vč. cesty
název souboru vč. cesty (Unix) nebo jen název souboru (Windows)
Problém je v tom, že standardní metoda getName() je podle dokumentace definována takto:
/**
* Returns the name of the file or directory denoted by this abstract
* pathname. This is just the last name in the pathname's name
* sequence. If the pathname's name sequence is empty, then the empty
* string is returned.
*
* @return The name of the file or directory denoted by this abstract
* pathname, or the empty string if this pathname's name sequence
* is empty
*/
public String getName() {
int index = path.lastIndexOf(separatorChar);
if (index < prefixLength) return path.substring(prefixLength);
return path.substring(index + 1);
}
The system-dependent default name-separator character. This field is initialized to contain the first character of the value of the system property file.separator. On UNIX systems the value of this field is '/'; on Microsoft Windows systems it is '\'
Aplikace, která do formuláře vyplnila název souboru běžela na Windows a proto ho vyplnila Windosowským způsobem. A handler běží na serveru, podle něj je separatorChar '/', to v názvu souboru nenajde a proto vrátí celý název souboru.
Nevíte jak v jspéčku zjistit, zda si ho uživatel prohlíží na Windows nebo Unixu (pak by se to dalo předat jako parametr) nebo jak to vyřešit jiným (co nejjednodušším) způsobem?
Dík
PS: I jspéčko si myslí, že je separatorChar '/'