Comunidad de diseño web y desarrollo en internet online

como enviar bytearray y variables por metodo post al mismo tiempo

Citar            
MensajeEscrito el 08 Jul 2012 11:44 pm
hola buenas tardes, he visto un codigo para poder guardar en un servidor una imagen a una carpeta por medio de php tomando la imagen de una webcam. tod se guarda bien, todo excelente, inclusive puedo insertar la ruta d ela imagen en la base de datos, solo que ahora tengo un problema, como los datos enviados por el metodo post son bytearray, solo envia los datos de la imagen al php, pero como puedo enviar tambien de las variables, es decir de campos de texto, he estado dando vueltas al asunto, y no me deja,les pongo el codigo de lo que hay hasta ahorita

Código ActionScript :

import com.adobe.images.JPGEncoder;
 
var video:Video;
var camera:Camera;
 
var imgBA:ByteArray;
var imgBD:BitmapData;
var imgBitmap:Bitmap;
 
var phpPath:String;
var jpgEncoder:JPGEncoder;
var sendHeader:URLRequestHeader;
var sendReq:URLRequest;
var sendLoader:URLLoader;
 
var imagePath:String;

 
setupCamera(320,240);
setupApplication();
 
function setupCamera(w:int,h:int):void {
    try {
        camera = Camera.getCamera();
    } catch(e:Error) {
        trace("No Camera detected!");
    }
   
    camera.addEventListener(StatusEvent.STATUS, camStatusHandler);
    camera.setMode(w,h,stage.frameRate);
   
    video = new Video(w,h);
    video.attachCamera(camera);
    addChild(video);
}
 
function camStatusHandler(event:StatusEvent):void {
    // Camera.Muted or Camera.Unmuted -> User's security
    trace(event.code);
}
 
function setupApplication():void {
    shotBtn.addEventListener(MouseEvent.CLICK, createSnapshot);
    removeBtn.addEventListener(MouseEvent.CLICK, removeSnapshot);
    sendBtn.addEventListener(MouseEvent.CLICK, sendImage);
   
   
    phpPath = "http://localhost/market/nuevo/saveimg.php"
 
    jpgEncoder = new JPGEncoder(90);
 
    sendHeader = new URLRequestHeader("Content-type","application/octet-stream");
    sendReq = new URLRequest(phpPath);
    sendReq.requestHeaders.push(sendHeader);
    sendReq.method = URLRequestMethod.POST;
   
   
   
    sendLoader = new URLLoader();
    sendLoader.addEventListener(Event.COMPLETE,imageSentHandler);
}


 
function createSnapshot(event:MouseEvent):void {
    imgBD = new BitmapData(video.width,video.height);
    imgBD.draw(video);
   
   imgBA.nombre.nombre_txt.text
   
    imgBitmap = new Bitmap(imgBD);
    addChild(imgBitmap);
 
    shotBtn.removeEventListener(MouseEvent.CLICK, createSnapshot);
}
 
function removeSnapshot(event:MouseEvent):void {
    removeChild(imgBitmap);
    shotBtn.addEventListener(MouseEvent.CLICK, createSnapshot);
}
 
function sendImage(event:MouseEvent):void {
   
   var vars:URLVariables = new URLVariables();
    vars.nombre = txtnombre.text;
   
   sendReq.data =vars
   
    imgBA = jpgEncoder.encode(imgBD);
   
    sendReq.data = imgBA;
    sendLoader.load(sendReq);
   
}
 
function imageSentHandler(event:Event):void {
    var dataStr:String = event.currentTarget.data.toString();
    var resultVars:URLVariables = new URLVariables();
    resultVars.decode(dataStr);
   
    imagePath = "http://" + resultVars.base + "/" + resultVars.filename;
    trace("Uploaded to: " + imagePath);
   trace(nombre);
}



en la funcion sendimage, es donde se ejecuta tod ya cuando esta listo la foto, lo he intentado de varias manera, inclusive por el metodo get, pero no me funciona, de ke otra manera puedo meter esa informacion de las cajas de texto en el bytearray, compartir o por separado, gracias

Por palmeros

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 09 Jul 2012 05:15 am
te paso un link donde explica bien como guardar una imagen en el servidor y mandar datos a la vez, gracias a la ayuda de una clase que permite esto:

http://llops.com/blog/2009/01/18/envio-de-imagenes-y-datos-con-as3/


Saludos


eXe

Por exekiel21

Claber

164 de clabLevel



Genero:Masculino  

programador

chrome
Citar            
MensajeEscrito el 10 Jul 2012 03:43 am
gracias por tu ayuda exekiel21, segui los pasos como me mostraste, y todo jala bien, pero tengo un problema, cuando guardo en una variable los valores d elos campos de texto, la variable no guarda nada, te explico:

al meter esto asi: funciona:

Código ActionScript :

phpPath = "http://localhost/market/nuevo/saveimg.php?nombre=jackie&paterno=chan"


o al meter esto asi funciona tambien:

Código ActionScript :

var nombre:String="jackie"
var apellido:String="chan"


Código ActionScript :

phpPath = "http://localhost/market/nuevo/saveimg.php?nombre="+nombre+"&paterno="+apellido



pero si hago esto ya no funciona, es decir meter los valores de las cajas de texto a las variables:

Código ActionScript :

var nombre:String=nombre_txt.text
var apellido:String=apellido_txt.text


el valor ni siquiera se envia, es decir al llegar al php pasa nulo, que puedo estar haciendo mal? te agradezco la ayuda

Por palmeros

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 10 Jul 2012 05:13 pm
ok resolvimos el problema, lo que pasa es que al correr el programa se ejecuta al instante esta linea de codigo:

Código ActionScript :

phpPath = "http://localhost/market/nuevo/saveimg.php"
 
    jpgEncoder = new JPGEncoder(90);
 
    sendHeader = new URLRequestHeader("Content-type","application/octet-stream");
    sendReq = new URLRequest(phpPath);
    sendReq.requestHeaders.push(sendHeader);
    sendReq.method = URLRequestMethod.POST;


obvio cuando se declara las variables ya con un valor predefinido se mandan correctamente, pero si en el caso son campos de texto, entonces carga los valores de los campos de texto nulos, por eso me mandaba nulos los valores por medio del get, lo que hice es que meti esa misma linea de codigo en esta funcion y funciono todo correctamente

Código ActionScript :

function sendImage(event:MouseEvent):void {
   
 var nombre:String
var apellido:String

nombre = nombre_txt.text
apellido = apellido_txt.text

phpPath = "http://localhost/market/nuevo/saveimg.php?nombre="+nombre+"&paterno="+apellido
 
    sendHeader = new URLRequestHeader("Content-type","application/octet-stream");
    sendReq = new URLRequest(phpPath);
    sendReq.requestHeaders.push(sendHeader);
    sendReq.method = URLRequestMethod.POST;
   
   
    imgBA = jpgEncoder.encode(imgBD);
   
    sendReq.data = imgBA;
    sendLoader.load(sendReq);
   
}


cuando oprimias la boton guardar imagen, invocaba la ruta del php donde se va a guardar los valores y la iamgen en la base de datos, no es antes :)

espero le sirva a alguien esto, saludos

Por palmeros

46 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Jul 2012 11:49 pm
el link que te pase, te enseña a no hacer lo que hiciste man. Mira bien el tuto.

Saludos


eXe

Por exekiel21

Claber

164 de clabLevel



Genero:Masculino  

programador

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.