Il @MultiPartConfig è in realtà solo un'interfaccia marcatore per il contenitore. Quando il servlet viene inizializzato, i valori di annotazione forniti vengono associati ad esso con un oggetto proxy. Quando la richiesta in entrata è multipart/form-data, le parti del caricamento vengono associate alla richiesta e il contenitore esegue il lavoro necessario in base ai valori dell'annotazione e delle parti sulla richiesta. Non è possibile per te intercettare questo processo poiché tutto ciò avviene all'interno del budello del contenitore. Tuttavia, c'è un'alternativa. Richiede l'esecuzione di un'operazione di file system una seconda volta. Poiché hai tutte le parti, puoi ricostruire il file e "ricaricarlo" nella posizione che preferisci. Potrebbe sembrare qualcosa di simile al metodo qui sotto. Tenete a mente, anche se ho provato in fretta in un servlet della mia per dimostrare il concetto non è ovviamente finito codice:
@Override
protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws ServletException, IOException {
httpServletResponse.setContentType("text/html");
PrintWriter printWriter = httpServletResponse.getWriter();
InputStream inputStream;
FileOutputStream fileOutputStream;
for (Part part : httpServletRequest.getParts()) {
inputStream = httpServletRequest.getPart(part.getName()).getInputStream();
int i = inputStream.available();
byte[] b = new byte[i];
inputStream.read(b);
String fileName = "";
for (String temp : part.getHeader("content-disposition").split(";")) {
if (temp.trim().startsWith("filename")) {
fileName = temp.substring(temp.indexOf('=') + 1).trim().replace("\"", "");
}
}
String uploadDir = "/temp";
fileOutputStream = new FileOutputStream(uploadDir + "/" + fileName);
fileOutputStream.write(b);
inputStream.close();
fileOutputStream.close();
printWriter.write("Uploaded file " + uploadDir + "/" + fileName + ".");
}
}
fonte
2013-10-13 02:02:18
Se stai usando @MultiPartConfig e hanno bisogno di un percorso di file runtime poi non hai altra opzione che "ri-caricare" le parti. –