Oops, no, that wouldn't work in this case. Perhaps it would be better if
we back up for a moment: why do you need a FileInputStream specifically?
Since FIS is a 'root level' IS implementation, i.e. designed to wrap a
datasource (file) directly rather than than to augment an existing stram
(like, for example, BufferedInputStream), there's no way to construct
one except with an actual File object.
The FormFile API doesn't give you any way to obtain a FileInputStream,
nor does it provide access to a File object. I think you'll have to use
a different approach to achieve your objective.
L.
Kirthi wrote:
sorry abt that
Its throwing exception at this line
FileInputStream fin = (FileInputStream) in;
I tried new FileInputStream(in) - But this is not a valid constructor - not
defined in API
Is there anyother way in struts where u get FileInputStream directly from
the ActionForm
-Thank you
Laurie Harper wrote:
You didn't specify which line in the code you posted is throwing the
exception, but I would guess it's this:
InputStream in = (InputStream) formFile.getInputStream();
FileInputStream fin = (FileInputStream) in;
It's never wise to down-cast a value from an interface type to a
concrete type like this. The API contract is to return you an
InputStream; it doesn't have to be any particular type of InputStream.
To do this safely, use the following code instead:
InputStream in = (InputStream) formFile.getInputStream();
FileInputStream fin = new (FileInputStream(in);
L.
Kirthi wrote:
I am having problems with the FileUpload in struts.
I am uploading an Excel File through browser and sending to Struts Action
Class, handling it with FormFile. I am casting this FormFile to
FileInputStream which is working fine.
But when I am deleting some of the rows in that excel file and uploading
it
again its giving me a ClassCastException when converting the Form File to
FileInputStream.
I have no idea y its happening like this. Can any one help me with this?
Thanks
Here is the error I am getting
root cause
java.lang.ClassCastException
at rcsa.struts.ExcelFileUpload.execute(ExcelFileUpload.java:48)
at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:198)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
******************************************************************************************
Here is the code
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.struts.upload.FormFile;
import org.apache.struts.action.*;
import rcsa.poi.RcsaPOIEventListner;
import rcsa.exceptions.RcsaException;
import rcsa.dao.OpRiskSSheet;
import rcsa.misc.ErrorHandler;
public class ExcelFileUpload extends Action {
// --------------------------------------------------------- Instance
Variables
String target;
// --------------------------------------------------------- Methods
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException,
RcsaException{
ActionMessages errors = new ActionMessages();
if(form != null){
ExcelFileUploadForm excelForm = (ExcelFileUploadForm)
form;
FormFile formFile = excelForm.getExcelFile();
InputStream in = (InputStream)
formFile.getInputStream();
FileInputStream fin = (FileInputStream) in;
errors.clear();
RcsaPOIEventListner.readExcelStream(fin);
//errors = new ErrorHandler(opSheet,
errors).checkErrors();
if(errors.isEmpty()){
target = "success";
}else{
target = "failure";
}
}else{
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("UNABLE TO LOCATE THE EXCEL FILE", false));
target = "failure";
}
saveErrors(request, errors);
return mapping.findForward(target);
}
}
**********************************************************************
import org.apache.struts.validator.ValidatorForm;
import org.apache.struts.upload.FormFile;
/**
[EMAIL PROTECTED]
*
*/
/**
*Form bean for File Upload.
*
*/
public class ExcelFileUploadForm extends ValidatorForm{
private FormFile excelFile;
/**
* @return Returns the theFile.
*/
public FormFile getExcelFile() {
return excelFile;
}
/**
* @param theFile The FormFile to set.
*/
public void setExcelFile(FormFile excelFile) {
this.excelFile = excelFile;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]