alla fine ho trovato un altro modo, usando la classe FileUpload però ho un problema nella cancellazione dei file temp
codice:
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private Percorsi p=new Percorsi();
private int iddomanda;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
String attributo = (String)request.getSession().getAttribute("iddomanda");
iddomanda=Integer.parseInt(attributo);
boolean isMultipartContent = ServletFileUpload.isMultipartContent(request);
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> fields = upload.parseRequest(request);
Iterator<FileItem> it = fields.iterator();
if (!it.hasNext()) {
return;
}
while (it.hasNext()) {
FileItem fileItem = it.next();
boolean isFormField = fileItem.isFormField();
if (isFormField) {
} else {
byte b[]=fileItem.get();
ServletContext ctx = getServletContext();
String path=ctx.getRealPath("/Immagini") ;
File f=new File(path);
File file=f.createTempFile("imm",".jpeg",f);
try {
fileItem.write(file);
String percorso="Immagini/"+file.getName();
p.percorsi(percorso);
} catch (Exception ex) {
Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
}
file.deleteOnExit();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
RequestDispatcher dispatcher;
request.setAttribute("fileName", p);
request.setAttribute("iddomanda", iddomanda);
dispatcher = getServletContext().getRequestDispatcher("/doUpload.jsp");
try {
//dispatcher.
dispatcher.forward(request, response);
} catch (ServletException ex) {
Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
In questo modo creo una copia in una mia cartella dell'immagine inserita.Però dopo questo vorrei cancellasse il file temp. Ho notato che dopo un po si autocancellano ma se volessi cancellarli subito? se uso deleteOnExit non funziona, se uso invece .delete poi non visualizzo l'imm per intero, come se non avesse avuto il tempo di copiarla tutta. Come posso fare?
Girando tra i forum ho letto che dovrei fare close() dell' ogg che uso x leggere o scrivere il file temp, come reader o writer, ma qui io non li uso e non so come fare!