Comunidad de diseño web y desarrollo en internet online

[Novato] ¿como enviar archivo + form a php con AS3?

Citar            
MensajeEscrito el 09 Abr 2010 01:15 pm
Hola como están?
les cuento quiero hacer un registro de novedades desde AS3 a php, luego php lo sube a un mysql, en es no hay problema el problema es enviar a php un filereference con variables...
tengo un código que conseguí en otro tutorial que me funciona de maravilla para subir archivos pero la verdad es que no se como enviarle a php no solo el archivo si no también las variables... alguien me puede ayudar? pongo el código que tengo de filereference, me faltaría saber como modificarlo para que no solo envíe el archivo a php sino también variables del tipo string como titulo y descripcion:


//Clases necesarias
import flash.events.*;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.URLRequest;
var path:String="http://metalstudio.com.ar/clientes/firstBack/";
//Dirección del PHP que va a subir el archivo
var uploadURL:URLRequest;
var archivo:FileReference;

//Función llamada al pulsar examinar, se crea el FileReference y se abre el navegador de archivos
function Examinar(event:MouseEvent) {
Estado_txt.appendText("\n" + "Vamos a seleccionar el archivo.");
uploadURL = new URLRequest();
uploadURL.url = path+"uploadSlideX.php";
archivo = new FileReference();
PonerListeners(archivo);
archivo.browse(getTypes());
}

//Añado los listener al objeto FileReference
function PonerListeners(dispatcher:IEventDispatcher) {
dispatcher.addEventListener(Event.CANCEL, cancelHandler);
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(Event.SELECT, selectHandler);
dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler);
}

//Con está función se generan los tipos de archivos que estarán disponibles para seleccionar desde el navegador
function getTypes():Array {
var allTypes:Array = new Array(getImageTypeFilter(), getTextTypeFilter());
return allTypes;
}

//Tipos de imágenes admitidos, tanto para pc como para mac
function getImageTypeFilter():FileFilter {
return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png");
}

//Tipos de archivos de texto admitidos, para pc y mac
function getTextTypeFilter():FileFilter {
return new FileFilter("Text Files (*.txt, *.rtf)","*.txt;*.rtf");
}


//Se distribuye cuando se cancela la descarga desde el navegador de archivos.
function cancelHandler(event:Event):void {
Estado_txt.appendText("\n" + "Subida cancelada.");
}

//Se distribuye cuando se finaliza la descarga o la carga
function completeHandler(event:Event):void {
Estado_txt.appendText("\n" + "Subida completada.");
}

//Se reciben datos del servidor tras completar la carga
function uploadCompleteDataHandler(event:Event):void {
Estado_txt.appendText("\n" + "Subida confirmada por el servidor.");
}

//Se produce cuando falla la carga y hay un código http de error.
//Por ejemplo si no se encuentra el PHP, se generará un error 404.
function httpStatusHandler(event:HTTPStatusEvent):void {
Estado_txt.appendText("\n" + "Se ha producido el siguiente error: " + event.status);
}

//Se produce cuando falla la carga o descarga
function ioErrorHandler(event:IOErrorEvent):void {
Estado_txt.appendText("\n" + event.text);
}

//Se inicia la carga o descarga
function openHandler(event:Event):void {
Estado_txt.appendText("\nComienza la subida");
}

//Se distribuye periodicamente durante la carga o la descarga, mostrando el progreso de la misma.
function progressHandler(event:ProgressEvent):void {
var file:FileReference = FileReference(event.target);
Estado_txt.appendText("\n" + event.bytesLoaded + " bytes de " + event.bytesTotal + " bytes subidos.");
}

function securityErrorHandler(event:SecurityErrorEvent):void {
Estado_txt.appendText("\nEl servidor no permitió la carga del archivo.");
}

function selectHandler(event:Event):void {
var archivo:FileReference = FileReference(event.target);
Estado_txt.text = archivo.name;
archivo.upload(uploadURL);

}

Examinar_bt.addEventListener(MouseEvent.CLICK,Examinar);

Por makerito

0 de clabLevel



 

safari
Citar            
MensajeEscrito el 09 Abr 2010 02:23 pm
Hola como estas?
Hace lo siguiente:

1) function Examinar(event:MouseEvent) :
aquí quitale sentencias y que te quede así:
function Examinar(event:MouseEvent) {
Estado_txt.appendText("Vamos a seleccionar el archivo.");
archivo = new FileReference();
PonerListeners(archivo);
archivo.browse(getTypes());
}
Esto lo que ara es que cuando abras el brose solo seleccione el archivo pero no lo envie pues la idea seria colectar las variables de tu form seleccionar la imagene y cuando todo esta ok seleccionemos GUARDAR.

2) a esta function selectHandler(event:Event):void
quitale el parametro: archivo.upload(uploadURL);
esto es para que no suba el archivo ni bien se selecciono.

3) Por ultimo agrega un boton llamado guardar y ponele el siguiente codigo:
btenviar.label = "Guardar";
btenviar.addEventListener(MouseEvent.MOUSE_DOWN, onEnviar);
function onEnviar(obj:Event) {
uploadURL = new URLRequest();
uploadURL.url = path+"uploadSlideX.php?sub=chorizo";
archivo.upload(uploadURL);
}

Lo que hicimos fue meter el uploadURL y el upload del file en la función del botón guardar entonces vos ahora en la URL pones meterle los parámetros y luego las recoges en php así: $sub = $_GET['sub'];
Fijate que en la url le agregue este parámetro, podes agregarles cuantos quieras.
Esa es mi solución, si a alguien se le ocurre algo mas que la plantee!

Saludos!

Por ariste666

18 de clabLevel



Genero:Masculino  

Argentina

safari

 

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