Comunidad de diseño web y desarrollo en internet online

Subir Jpg creado en flash a un servidor

Citar            
MensajeEscrito el 16 Sep 2010 10:15 am
Hola a todos!
Estoy desarrollando una aplicación de dibujo en flash y necesito que cuando el usuario haya acabado de hacer el dibujo y le de al botón guardar, el dibujo que haya echo se guarde como jpg en una carpeta de un servidor. Ya he logrado que me guarde el dibujo como jpg a la máquina utilizando Filereference, luego he encontrado un código que utiliza un PHP para hacer lo mismo, pero no para subir el jpg al servidor:


Código ActionScript :

private function saveHandler(e:MouseEvent):void
      {
         var canvasBmp:BitmapData = new BitmapData(521,213);
         canvasBmp.draw(canvas);

         var myEncoder:JPGEncoder = new JPGEncoder(100);
         var byteArray:ByteArray = myEncoder.encode(canvasBmp);
         
         canvasBmp.dispose();
         
         //para abrir una ventana y que el usuario guarde el archivo
         _fileRef = new FileReference();
         _fileRef.save(byteArray, "imagen.jpg");

         //para hacerlo con PHP
         //Identifico el tipo de datos como un archivo de código binario
         var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");
                        
         var saveJPG:URLRequest = new URLRequest("savejpg.php?img=mydrawing.jpg");
         saveJPG.requestHeaders.push(header);
         saveJPG.method = URLRequestMethod.POST;
         saveJPG.data = byteArray;

         navigateToURL(saveJPG, "_blank");
      }


y este es el php:

Código PHP :

<?php

if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
   $jpg = $GLOBALS["HTTP_RAW_POST_DATA"]; 
   $img = $_GET['img'];
   header('Content-Type: image/jpeg');
   header("Content-Disposition: attachment; filename=".$img);
   echo $jpg;
} else {
   echo 'Encoded JPEG information not received.';
}

?>


¿como podría hacer que el archivo se subiese a un servidor en vez de a la máquina del usuario?

Gracias!!

Por plug78

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Sep 2010 03:27 pm
Prueba algo así:

Código :

if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) { 
   $jpg = $GLOBALS["HTTP_RAW_POST_DATA"];  
   $img = $_GET['img']; 
   $fp = fopen($img, 'w');
   fwrite($fp, $jpg);
   fclose($fp);
} else { 
   echo 'Encoded JPEG information not received.'; 
} 


PHP tiene que tener permisos de escritura sobre el directorio

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Sep 2010 07:06 am
Hola Jorge, he utilizado el php que me has puesto pero me da los siguientes errores:

Código :

Warning: fopen(mydrawing.jpg) [function.fopen]: failed to open stream: Permission denied in /home/my_user/public_html/mi_carpeta/savejpg.php on line 6

Warning: fwrite(): supplied argument is not a valid stream resource in /home/my_user/public_html/mi_carpeta/savejpg.php on line 7

Warning: fclose(): supplied argument is not a valid stream resource in /home/my_user/public_html/mi_carpeta/savejpg.php on line 8


A que te refieres con que le tengo que dar permisos de escritura al PHP? este, está alojado en la carpeta raiz de la aplicación.

Por plug78

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Sep 2010 03:05 pm
Falla porque no tiene peemisos de escritura, no crea el archivo, ergo no lo puede leer.
Usualmente (depende que programa de FTP uses), haces click derecho en el directorio remoto y le otorgas permisos, por ejemplo 755 (para probar puedes usar 777, pero no es aconsejable dejar que cualquiera escriba, sobre todo si es un directorio importante)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Sep 2010 06:32 am
ya tenía la carpeta con permisos 777
:?

Por plug78

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Sep 2010 07:24 am
OK, ya funciona! lo que pasaba era que también le tenía que dar permisos a la carpeta raiz y no solo a la contenedora de las imágenes.

Muchas gracias por tu ayuda Jorge!

Por plug78

46 de clabLevel



 

firefox

 

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