Come impostare il percorso di “percorso di contesto” per i file caricati utilizzando fileupload Apache comune?

StackOverflow https://stackoverflow.com/questions/2901961

Domanda

Sto usando Apache libreria comune fileupload con Netbeans 6.8 + Glassfish.I'm cercando di cambiare il percorso di caricamento corrente di essere nel percorso del contesto attuale del servlet, qualcosa di simile a questo: WEB-INF / upload

così ho scritto:

File uploadedFile = new File("WEB-INF/upload/"+fileName);
session.setAttribute("path",uploadedFile.getAbsolutePath());
item.write(uploadedFile);

ma ho notato che la biblioteca salva i file caricati in GlassFish cartella , ecco cosa ottengo quando stampo il percorso assoluto del file caricato:

C:\Program Files\sges-v3\glassfish\domains\domain1\WEB-INF\upload\xx.rar 

La mia domanda:

  • Come posso forzare il FileUpload comune per salvare il file caricato in un percorso relativo al percorso servlet corrente, quindi non ho bisogno di specificare l'intero percorso? è possibile?
È stato utile?

Soluzione

Il java.io.File agisce sul file system del disco locale e sa assolutamente nulla sul contesto è in esecuzione in. Non si deve aspettare per trovare la posizione "giusta" quando si passa un percorso relativo web in. sarebbe diventato relativamente al directory di lavoro corrente , che dipende da come l'avvio dell'ambiente. Non si vuole essere dipendente da quello.

È possibile utilizzare ServletContext#getRealPath() per convertire un percorso web relativo a un percorso di file system del disco locale di assoluto.

String relativeWebPath = "/WEB-INF/uploads";
String absoluteFilePath = getServletContext().getRealPath(relativeWebPath);
File uploadedFile = new File(absoluteFilePath, FilenameUtils.getName(item.getName()));
// ...

Detto questo, spero che tu sia consapevole del fatto che la cartella Deploy non è il posto giusto per i file caricati che dovrebbero essere salvati in modo permanente. Tutto si perde quando si ridistribuisce la webapp. Vedere anche Come scrivere un file cartella delle risorse / immagini del app?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top