Enviar imagen al servidor

Hola, tengo un problema que no sé cómo solucionarlo por mucho que lo intento.
Quiero que el cliente envíe mediante un formulario una imagen seleccionada por él al servidor. El script funciona correctamente: carga la imagen, la redimensiona para que pueda visulizarla previamente, pero al enviarla mediante JPGEncoder no envía los datos (píxels). No voy a poner todo el código porque sería muy largo, pero pondré lo más importante a ver si puedes darme alguna pista.
function ImageLoaded(event:Event):void {
    txtrprueba="Se ha cargado la imagen! ";
    bitmap = Bitmap(event.target.content);
    bitmap.smoothing = true;
    addChild(bitmap) ;
    if ( bitmap.width > MAX_WIDTH || bitmap.height > MAX_HEIGHT ) {
        resizeBitmap ( bitmap ) ;
    }
    bitmap.x=42;
    bitmap.y=91;
    var jpgSource:BitmapData = new BitmapData (bitmap.width, bitmap.height);
    jpgSource.draw(bitmap);
    var jpgEncoder:JPGEncoder = new JPGEncoder(80);
    byteArray = jpgEncoder.encode(jpgSource);
}
function envia(event:Event){
    txtprueba.text="Se ha pulsado";
    var variables = new URLVariables();
    variables.nombre="Benjamin";
    variables.fileName=txtarchivo.text;
    variables.MAX_FILE_SIZE=1000000;
    variables.file = byteArray;
    var request:URLRequest = new URLRequest();
    request.requestHeaders.push(new URLRequestHeader("application","x-www-form-urlencoded"));
    request.requestHeaders.push(new URLRequestHeader("multipart","form-data"));
    request.url = "http://localhost/pruebas/bytearray.asp";
    request.method = URLRequestMethod.POST;
    request.data = variables;   try {
        navigateToURL(request,"_self");
    }
    catch (error:Error) {
        trace("Unable to load URL");
    }
    function completeHandler(event:Event):void {
        //trace(event.target.data.welcomeMessage);
        txtprueba.text="El envío se ha completado.";
    }
}
En la página de recepción del envío aparecen todas las variables que se indican, pero en la variable file aparece ÿØÿà, que es la firma de cabecera de una imagen jpg. Se supone que luego vendrían los datos codificados por el JPGEncoder, pero no aparecen :( Agradeceré cualquier información que puedas aportarme. Desde ya, gracias por tu interés y un saludo.

1 Respuesta

Respuesta
-1
A partir de código en flash necesitas una librería as3corelib en php en el servidor..
No se donde puede estar tu error pero aquí hay un tutorial en español bastante bueno en tu tema:
http://www.tutoriales-flash.com/tutorial.php?id_tuto=39
________err______________________________
Hola, vamos por partes.
La librería as3corelib pertenece a flash y sin ella no podría trabajar con la clase JPGEncoder.
Si te fijas en en la ruta del archivo que recibe el post es asp, por lo que evidentemente no trabajo con php.
El tutorial que me indicas ya lo tenía probado, pero utiliza Base64 para enviar los datos como texto. El problema es que con imágenes grandes genera error, al superar el límite del envío de datos aunque le indique 1Gb de tamaño máximo (ver código)
Como digo al principio, no carga los datos del bitmapData, por lo que no sé si puede haber una instrucción que fuerce a leerlos. El problema está en el código y aunque tengo probado cambiando las cabeceras del post sigue sin funcionar.
Si es el problema de tamaño, es una configuración del servidor, en php se llama:
Memory_limit = 24M // es total multiplicando el tamaño horizontal por vertical de la imagen, así que fotos con más que mil pixel necesitan centenares de megas de memory limit.
Si trabajas en asp, prueba preguntar algún experto en asp como se configura en iis o win mismo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas