Hi all,

I'm having a problem trying to get file upload to work.

        <h:form id="form1" name="form1" enctype="multipart/form-data" >
            <h:outputText value="Please give me an image"/>
            <t:inputFileUpload id="fileupload"
                               accept="image/*"
                               value="#{ui.someUser.file}"
                               storage="file"
                               required="true"/>

            <h:commandButton value="Upload Now!" action="" />
        </h:form>

My bean effectively has this in it:

import org.apache.myfaces.custom.fileupload.UploadedFile;
:
:
public class MyBean
{
    public void fileUploaded(ValueChangeEvent event)
    {
        UploadedFile file = (UploadedFile)event.getNewValue();
        if (file != null)
        {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage("Successfully uploaded file " + file.getName() + " (" + file.getSize() + " bytes)");
            context.addMessage(event.getComponent().getClientId(context), message);
            // Here's where we could call file.getInputStream()
        }
        else
        {
            System.out.println("fileUploaded called with no file");
        }
    }
   
    public UploadedFile getFile()
    {
        return _file;
    }

    public void setFile(UploadedFile file)
    {
        // never called!
        _file = file;
    }

    public String doUpload()
    {
        UploadedFile file = getFile();
        // ... and process it in some way
        return (file != null ? file.getName() : "nullo");
    }

    private UploadedFile _file;   
}

Please help!

Regards, Murray

================================================
extra notes:

1) I am using Facelets + Myfaces + Tomahawk + ADF faces.

2) For a start I get a _javascript_ error on submit because clear_form1(); does not exist not sure why it is missing.
The following html was generated:
 <input id="form1:_id6" name="form1:_id6" type="submit" value="Upload Now!" >

3) My web.xml
    <filter>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>maxFileSize</param-name>
            <param-value>20m</param-value>
            <description>Set the size limit for uploaded files.
                Format: 10 - 10 bytes
                        10k - 10 KB
                        10m - 10 MB
                        1g - 1 GB
            </description>
        </init-param>
    </filter>
   
    <!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages  -->
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>FacesServlet</servlet-name>
    </filter-mapping>
   
    <!-- extension mapping for serving page-independent resources (_javascript_, stylesheets, images, etc.)  -->
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
    </filter-mapping>

4) ADF faces file upload exhibits the same behaviour.

5) The file is definitely attempting to be uploaded because if I give a really big file I get a SizeLimitExceededException.

Apr 11, 2006 4:58:58 AM org.apache.myfaces.webapp.filter.MultipartRequestWrapper parseRequest
INFO: user tried to upload a file that exceeded file-size limitations.
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (337407087) exceeds the configured maximum (104857600)
        at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:310)
        at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
        at org.apache.myfaces.webapp.filter.MultipartRequestWrapper.parseRequest(MultipartRequestWrapper.java:81)
        at org.apache.myfaces.webapp.filter.MultipartRequestWrapper.getParameterMap(MultipartRequestWrapper.java:177)
        at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFacesFilterImpl.java:184)
        at oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java:80)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:130)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

Reply via email to