Ho composto il codice Jsp-java, per l'Upload di file su server.
parte di codice contenuto nella pagina JSP
codice:
<td>
<html:form action="/upload" enctype="multipart/form-data">
<table align="center" border="2" style="border-collapse: collapse">
<tr>
<td align="center">File</td>
<td>
<html:file property="myFile"/>
</td> <td>
<html:submit value="SALVA"/>
</td>
</tr>
</table>
</html:form>
</td>
Specifiche contenuto nel file xml di struts
codice:
<form-bean name="formUpload" type="it.progetto.form.FormUpload"/>
.....
<action
attribute="uploadForm"
input="./upload.jsp"
name="formUpload"
path="/upload"
scope="request"
type="it.progetto.controllo.AzioneUpload">
<forward name="successo" path="/WEB-INF/protette/paginaInserimento.jsp" />
<forward name="errori" path="/errori.jsp" />
</action>
classe java
codice:
package it.progetto.controllo;
import it.progetto.form.*;
import java.util.*;
import javax.servlet.http.*;
import org.apache.commons.logging.*;
import org.apache.commons.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.*;
import org.apache.torque.Torque;
import org.apache.torque.util.*;
import javax.servlet.*;
import java.io.*;
import javax.servlet.*;
public class AzioneUpload extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
try {
// istanziamo il nostro ActionForm
FormUpload theForm = (FormUpload) form;
// ricaviamo il testo inserito dall'utente
String text = theForm.getText();
// ricaviamo l'immagine del file di cui si vuole fare l'upload
FormFile file = theForm.getMyFile();
// ricaviamo il nome del file
String fileName= file.getFileName();
// ricaviamo il MIME type del file
String contentType = file.getContentType();
// ricaviamo le dimensioni del file (in Bytes)
int sizeTemp = file.getFileSize();
String size = (sizeTemp + " Bytes");
// costruiamo una stringa che indicherà il percorso assoluto sul server nel quale
// sarà salvato il file, ad
// esempio C:\files\mioFile.txt
String path = "C:\\files\\" + fileName;
try {
// ricaviamo i dati del file mediante un InputStream
InputStream inStream = file.getInputStream();
FileOutputStream outStream = new FileOutputStream(path);
// salviamo il file nel percorso specificato
while (inStream.available()>0) {
outStream.write(inStream.read());
}
} catch (FileNotFoundException fnfe) {
return null;
} catch (IOException ioe) {
return null;
} // eliminiamo il file temporaneo che abbiamo creato
file.destroy();
// mettiamo nella request i dati così da poterli ricavare dalla jsp
request.setAttribute("text",text);
request.setAttribute("path",path);
request.setAttribute("contentType",contentType);
request.setAttribute("size",size);
// forwardiamo alla jsp mappata come "Success" nel file struts-config.xml
return mapping.findForward("Success");
}catch(Exception e){
e.printStackTrace();
} return null;
}
}
e questo è l'errore che ritorna
codice:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
java.lang.Class.getConstructor0(Unknown Source)
java.lang.Class.newInstance0(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:167)
org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:142)
org.apache.struts.util.RequestUtils.getMultipartHandler(RequestUtils.java:536)
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:394)
org.apache.struts.chain.commands.servlet.PopulateActionForm.populate(PopulateActionForm.java:50)
org.apache.struts.chain.commands.AbstractPopulateActionForm.execute(AbstractPopulateActionForm.java:60)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.10
Chi mi può aiutare, sono giorni che mi sbatto per creare la prte di codice che mi permetta di caricare file sul server, tecnologia Tomcat-struts-java....