config
22-08-2009, 15:54
Ciao a tutti.
Devo uploadare un file su un server, per fare questo chiamo una servlet ed utilizzo le com.oreilly.
Pare che funzioni, difatti selezionando un file tramite un form di tipo
<form ENCTYPE='multipart/form-data' action='../FileUpload' method='post'>
con l'oggetto con l'input type="file"
viene copiato il file nella directory specificata.
Il mio problema è che vorrei rinominare tale file con una stringa presa da un parametro che riesco a passare dalla pagina.jsp alla servlet.
toRename() mi restituisce sempre false e se provo a specificare un nome diverso da quello ottenuto dal form mi solleva un'eccezione.
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.ServletUtils;
public class FileUpload extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
String status = null;
String forw = null;
res.setContentType("text/plain");
MultipartRequest multi = new MultipartRequest(req,".");
String nf = req.getParameter("nf"); //stringa con cui vorrei rinominare il file
File f = multi.getFile("fimg"); //file da copiare
String fileName = multi.getFilesystemName("fimg");
if(nf==null)
nf=multi.getParameter("nf");
String type = multi.getContentType(fileName);
nf=nf+".jpg";
if (f!=null)
{
//fileName=nf + ".jpg"; //se cambio nome qui mi da eccezione
File fOUT = //new File(req.getContextPath(), fileName);
new File(req.getSession().getServletContext().getRealPath("/imgs/") , fileName);
FileInputStream fIS = new FileInputStream(f);
FileOutputStream fOS = new FileOutputStream(fOUT);
try{
while (fIS.available()>0)
fOS.write(fIS.read());
fOS.flush();
fIS.close();
fOS.close();
status="Operazione eseguita con successo";
}catch(Exception e)
{
status = " Errore nel caricamento file " + e.toString();
}
}
File file = new File(req.getSession().getServletContext().getRealPath("/imgs/") , fileName);
File file2 = new File(req.getSession().getServletContext().getRealPath("/imgs/") , nf);
boolean success= file.renameTo(file2);
//questo success mi da sempre false.
}
}
Non so davvero dove sbattere la testa :muro:
Grazie in anticipo per le risposte.
Devo uploadare un file su un server, per fare questo chiamo una servlet ed utilizzo le com.oreilly.
Pare che funzioni, difatti selezionando un file tramite un form di tipo
<form ENCTYPE='multipart/form-data' action='../FileUpload' method='post'>
con l'oggetto con l'input type="file"
viene copiato il file nella directory specificata.
Il mio problema è che vorrei rinominare tale file con una stringa presa da un parametro che riesco a passare dalla pagina.jsp alla servlet.
toRename() mi restituisce sempre false e se provo a specificare un nome diverso da quello ottenuto dal form mi solleva un'eccezione.
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.ServletUtils;
public class FileUpload extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
String status = null;
String forw = null;
res.setContentType("text/plain");
MultipartRequest multi = new MultipartRequest(req,".");
String nf = req.getParameter("nf"); //stringa con cui vorrei rinominare il file
File f = multi.getFile("fimg"); //file da copiare
String fileName = multi.getFilesystemName("fimg");
if(nf==null)
nf=multi.getParameter("nf");
String type = multi.getContentType(fileName);
nf=nf+".jpg";
if (f!=null)
{
//fileName=nf + ".jpg"; //se cambio nome qui mi da eccezione
File fOUT = //new File(req.getContextPath(), fileName);
new File(req.getSession().getServletContext().getRealPath("/imgs/") , fileName);
FileInputStream fIS = new FileInputStream(f);
FileOutputStream fOS = new FileOutputStream(fOUT);
try{
while (fIS.available()>0)
fOS.write(fIS.read());
fOS.flush();
fIS.close();
fOS.close();
status="Operazione eseguita con successo";
}catch(Exception e)
{
status = " Errore nel caricamento file " + e.toString();
}
}
File file = new File(req.getSession().getServletContext().getRealPath("/imgs/") , fileName);
File file2 = new File(req.getSession().getServletContext().getRealPath("/imgs/") , nf);
boolean success= file.renameTo(file2);
//questo success mi da sempre false.
}
}
Non so davvero dove sbattere la testa :muro:
Grazie in anticipo per le risposte.