Problema ao tentar add uma imagem no banco

Bom dia Galera!

É o seguinte tenho uma aplicação em Flex, na qual preciso fazer upload de uma imagem (até ai, tá tudo Ok)
Em seguida, essa Imagem precisa ser exibida em tempo de execução na aplicação(até aqui tudo Ok Também)
O Problema surge, quando tento add essa imagem em um campo MEDIUMBLOB no BD.

Para um melhor entendimento vou adicionar trechos do Codigo:

private var refUploadFile:FileReference;         
		 private var imagemCranioCaudalForcada:ByteArray;
     	 private var imagemCraniocaudal:ByteArray;
     	 private var imagemMedioLateralObliqua:ByteArray;
     	 private var imagemPerfi:ByteArray;
	        /**             * @private             * Chamado quando o botão de adicionar arquivo for clicado.             */    
	     private function adicionarArquivos():void 
{               
	     	 /* Inicializa o FileReference a adicinar os Listeners */
	     	 refUploadFile = new FileReference();                
	     	 refUploadFile.browse();                
	     	 refUploadFile.addEventListener(Event.SELECT, trateArquivoSelecionado);                
	     	 refUploadFile.addEventListener(Event.COMPLETE, trateArquivoCompleto);  
	     	
	     	          
}


                    private function trateArquivoSelecionado(event:Event):void 
	     	 {                
                                     /* Este metodo LOAD, foi implementado na versao do FP 10,            
                                      * é graças a ele que conseguimos recuperar o ByteArray e enviar para o Server */                
	     	      refUploadFile.load();
                                  }     

                   public function trateArquivoCompleto(event:Event):void 
			
	     { 
	              imgCranioCaudal.load(refUploadFile.data);    
	              refUploadFile = event.currentTarget as FileReference;
                              /* readBytes é responsavel por ler logicamente os dados do FileReference        
	               * e repassar o valor do ByteArray do arquivo para a variavel armazenadora */               
	               refUploadFile.data.readBytes(imgCraniocaudal, 0, refUploadFile.data.length); 
                             //(Nesse Momento imgCraniocaudal é consderada de acesso indefindo???? mas ela foi  declada no começo do codigo).
	       }

                     

No trecho acima está quase tudo Ok, tirando esse problema de acesso indefinido(quem souber qual o problema, me dê um toque no que estou deixando passar).

E por ultimo tento Add a Imagem.


                     public function incluirExame():void
      {
      	var radiologista:String;
      	var anamnese:String;
                var data:String;
        
     radiologista = cbradiologista.text;
     anamnese = cbanamnese.text;
     data = txtdata.text;
     
     Controlador.incluirExame(radiologista,anamnese,data,imagemCraniocaudal,imagemCranioCaudalForcada,imagemMedioLateralObliqua,imagemPerfi)
      
      
      }

O Problema realmente está aqui na camada do Flex.
(caso precisem do codigo da camada Java também passo aqui pra ajudarem a solucionar o problema).

Desde já, Obrigado a todos Pela atenção!

Blz meu amigo, bom sobre a váriavel tem certeza que o nome é imgCraniocaudal lá em cima vc tem private var imagemCraniocaudal:ByteArray, bom este é o primeiro erro que vi ( o nome da váriavel)
como esta o codigo no servidor (java) para vc salvar a imagem?
os dados não estão chegando null?

Pois é Brother o imgCranioCaudal é o nome do componente que recebe a imagem que acabou de ser selecionada através do browser.
imagemCraniocaudal é a variavel que deve receber os bytes que estão temporariamente no componente imgCranioCaudal.

na verdade, o que acontece é que quando vou add um texto no BD, tenho que fazer algo como:

 
public function incluirExame():void
      {
      	var radiologista:String;
                 radiologista = cbradiologista.text;
                 Controlador.incluirExame(radiologista);

      }

Certo?

Acredito que teria que fazer algo como:


public function incluirExame():void
      {
      	var radiologista:String;
                var imagemCraniocaudal:ByteArray;
                 

                 radiologista = cbradiologista.text;
                 imagemCraniocaudal = imgCraniocaudal; //dá o erro: implicit coercion of a value of type mx.controls:Image to a unrelated type flash.utils:ByteArray.
                 Controlador.incluirExame(radiologista,imagemCranioCaudal);

      }

Logo Postarei a camada controlador do Java.

Obrigado pela atenção.

meu amigo, vê se isto te ajuda
http://blog.flexexamples.com/2008/03/17/displaying-an-image-saved-as-a-base64-encoded-string-in-flex-3/

Obrigado pela dica amigo, mas infelizmente não me ajudou muito.

vou passar o codigo em Java pra ver se o entendimento fica mais facil.

Este é o metodo do Controlador.


public void incluirExame(String radiologista, String anamnese, String data,
			byte[] imagemCraniocaudal, byte[] imagemCranioCaudalForcada,
			byte[] imagemMedioLateralObliqua, byte[] imagemPerfi) {

		Exame exame = new Exame();

		String[] linha1 = anamnese.split("-");
		String[] linha2 = radiologista.split("-");
		String codigoA = linha1[0].trim();
		String codigoR = linha2[0].trim();
		Radiologista r = radiologistaDAO.buscarPorCodigo(Integer
				.parseInt(codigoR));
		Anamnese a = anamneseDAO.buscarPorCodigo(Integer.parseInt(codigoA));
		exame.setRadiologista(r);
		exame.setAnamnese(a);
		exame.setData(data);
		exame.setImagemCraniocaudal(imagemCranioCaudalForcada);
		exame.setImagemCraniocaudal(imagemCraniocaudal);
		exame.setImagemMedioLateralObliqua(imagemMedioLateralObliqua);
		exame.setImagemPerfil(imagemPerfi);

		exameDAO.incluirExame(exame);

	}

Quando tento salvar ele faz o procedimento normalmente, mas ao abrir o banco apenas consta [BLOB-0Bytes]

RESOLVIDO!!!

Encontrei o problema…

Só precisava instanciar um novo ByteArray. Depois Jogar ela para que o readBytes cuidasse do resto!!!



		public function trateArquivoCompleto(event:Event):void 
			
	     {  	  
	     		  imgCranioCaudal.load(refUploadFile.data);    
	              refUploadFile = event.currentTarget as FileReference;
	             // Instanciando a variavel com um novo ByteArray.
	              imagemCraniocaudal = new ByteArray();
  	            /* readBytes é responsavel por ler logicamente os dados do FileReference        
	             * e repassar o valor do ByteArray do arquivo para a variavel armazenadora */               
	             refUploadFile.data.readBytes(imagemCraniocaudal, 0, refUploadFile.data.length);
	       		
	       }

Obrigado pela atenção!