
Originariamente inviata da
sella89
allora ho creato sul server la servlet che gestisce la lettura dei byte dell'immagine.. ma in fase di debug sembrerebbe che non raggiunge la servlet, credo che imposto male il la FormAction(), ci metto l'indirizzo in localhost dove si trova il file della servlet. dove sbaglio?
allora vi scrivo come ho impostato il procedimento, che ho cambiato un pò di cose e spero vivamente in un vostro aiuto.
ho un package client e uno server,
sul package client ho scritto questo:
codice:
HorizontalPanel hoImg = new HorizontalPanel(); //InputStream ips= new InputStream("");
VpAnn2.add(new Label("inserisci foto:"));
VpAnn2.add(hoImg);
hoImg.add(fupl);
hoImg.add(fPan);
VpAnn2.add(insert);
//fPan.setAction("/Prova/fileUpl/");
fPan.setAction("/Prova/src/com/prova/server/fileupl");
fPan.setEncoding(FormPanel.ENCODING_MULTIPART);
fPan.setMethod(FormPanel.METHOD_POST);
//fPan.setWidget(dBox4);
//Connessione al DB con metodo inserimentoRadio
insert.addClickHandler(new ClickHandler()
{
public void onClick(ClickEvent Event)
{
final String getMarca= marca.getText();
final String getModello= modello.getText();
final String getAnno= anno.getText();
final String getPrezzo=prezzo.getText();
final String getDim=dim.getText();
final String foto=fupl.getFilename();
String img=null;
if(foto.length()==0){
Window.alert("no File Specified");
}
else{
fPan.submit();
}
fPan.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
@Override
public void onSubmitComplete(SubmitCompleteEvent event) {
// TODO Auto-generated method stub
if(event.getResults()==null){
Window.alert("foto non inserita");
}
else{
Window.alert(event.getResults());
}
}
});
dove fPan è un:
codice:
Form fPan=new Form();
fupl è un:
codice:
FileUpload fupl=new FileUpload();
poi nel package server ho creato la servlet a cui fa riferimento la fPan.setAction(), e è impostata in questo modo:
codice:
public void DoPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
FileItemFactory factory= new DiskFileItemFactory();
//create a new file upload Handler
ServletFileUpload upload= new ServletFileUpload(factory);
try{
//parse the Request
List items=upload.parseRequest(request);
Iterator iter=items.iterator();
while(iter.hasNext()){
FileItem fileItem=(FileItem) iter.next();
//cattura un normale form-field
if(fileItem.isFormField())
{
System.out.println("Got a form Field");
String fieldName=fileItem.getFieldName();
String fileName=fileItem.getString();
System.out.println("Name:"+fileName+", Value:"+fieldName);
}else{//cattura il file da uplodare
System.out.println("Not Form Field");
String fieldName=fileItem.getFieldName();
String fileName=fileItem.getName();
if(fileName!=null){
fileName=FilenameUtils.getName(fileName);
}
String contentType=fileItem.getContentType();
boolean isInMem=fileItem.isInMemory();
long sizeinByte=fileItem.getSize();
System.out.println("Field Name:"+fieldName+" ,File Name:"+fileName);
System.out.println("Content Type: "+contentType+", isInMEmory:"+isInMem+", Size: "+sizeinByte);
byte[] data=fileItem.get();
fileName=getServletContext().getRealPath(fileName);
System.out.println("File Name: "+ fileName);
FileOutputStream fileOutput= new FileOutputStream(fileName);
fileOutput.write(data);
fileOutput.close();
System.out.println("File upload Successfully");
}
}
}
catch(Exception e){
e.printStackTrace();
}
ed infine ho impostato questa servlet anche nel web.xml dove gestisco il name e l'url nel <servlet> E <servlet-mapping>.
Ora in fase di debug non riesco a raggiungere il file scritto nel nel package del Server.
come posso procedere?
altra domanda io mi aspetto una response dalla servlet per poi lato client inviare una richiesta alla mia prima servlet GreetingSeriviceImpl che si interfaccia con i database, ma mi converrebbe impostare tutta la connessione al db con la seconda servlet(usata solo per il caricamento del file immagine?)in questo ultimo caso come gestisco il form e i vari attributi della tabella?
Spero in una vostra risposta che non so piu che pesci prendere.
vi Ringrazio anticipatamente.