    // ------------------------------------------------------------------------
    // call initImageUpload() e.g. from constructor
    // call destroyImageUpload() when closing your dialog
    // ------------------------------------------------------------------------

    public class MyUpload extends DefaultUploadContent
    {
        @Override
        public void beginPassing() { }
        @Override
        public void passClientFile(String fileName, byte[] content)
        {
            m_imageBytes = content;
            m_imageFileName = fileName;
        }
        @Override
        public void endPassing() { }
    }
    
    MyUpload m_upload = new MyUpload();
    byte[] m_imageBytes;
    String m_imageURL;
    String m_imageFileName;
    
    public String getUploadURL() { return m_upload.getURL(); }
    public String getImageURL() { return m_imageURL; } 

    public void onUploadAction(javax.faces.event.ActionEvent event) 
    {
        if (m_imageBytes != null)
            m_imageURL = TempFileManager.saveTempFile(m_imageFileName,m_imageBytes);
        else
            m_imageURL = null;
    }
    
    private initImageUpload { UploadContentMgr.add(m_upload); }
    private void destroyImageUpload() { UploadContentMgr.remove(m_upload); }