Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/02/2012, 15:37
Avatar de VbOkonly
VbOkonly
 
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 15 años, 4 meses
Puntos: 5
Problema con uploadify PHP+AJAX+MySQL

Buenas nuevamente, volvi con php pero me acabo de meter en un rollo de aquellos

Estoy usando uploadify, logré dimensionar las imagenes y todo, ahora es momento de guardar la ruta y la id respectiva del usuario para despues obtenerlas cuando sea necesario, pero bien, aca esta mi problema.

Sinceramente probe de todo, desde usar sesiones (uploadify no tolera estas), y hasta llamar a una funcion desde el mismo uploadify.php xD pero nada..

Mi idea es la siguiente, pasar por uploadify(ajax) la variable post id y guardar las rutas de las imagenes en una bd junto con el id del usuario.

Este es la parte de ajax de uploadify

Código Javascript:
Ver original
  1. // <![CDATA[
  2.     $(document).ready(function() {
  3.       $('#file_upload').uploadify({
  4.         'uploader'  : 'dify/uploadify.swf',
  5.         'script'    : 'dify/uploadify.php',
  6.         'scriptData': 'var ID = $(‘input[name="#id_file"]‘).val();',
  7.         'cancelImg' : 'dify/cancel.png',
  8.         'folder'    : '/uploads',
  9.         'buttonText': 'Cambiar Foto',
  10.         'sizeLimit' : '5242880',
  11.         'displayData': 'percentage',
  12.         'fileExt'     : '*.jpg;*.gif;*.png;*jpeg',
  13.         'fileDesc'    : 'Image Files',
  14.         'onComplete'  : function(event, ID, fileObj, response, data) {
  15.         $.post("#id_user",{name: fileObj.name, id_user: $("#id_user").val()}, function(info) {
  16. alert(info); // alert UPLOADED FILE NAME
  17. });
  18.         window.location.reload();
  19.         },
  20.         'auto'      : true
  21.       });
  22.     });
  23.     // ]]>

Esta es la parte HTML:

Código HTML:
Ver original
  1. <input id="file_upload" type="file" name="file_upload" />
  2. <input id="id_user" type="hidden" name="id_user" value="<?php echo $user;?>"/>


Bien, lo que deseo es que con ajax se pueda pasar por post id_user y que ese post termine aca:
uploadify.php
Código PHP:
Ver original
  1. if (!empty($_FILES)) {
  2.  
  3.         class Image {
  4.            
  5.             var $uploaddir;
  6.             var $quality = 100;
  7.             var $ext;
  8.             var $dst_r;
  9.             var $img_r;
  10.             var $img_w;
  11.             var $img_h;
  12.             var $output;
  13.             var $data;
  14.             var $datathumb;
  15.            
  16.             function setFile($src = null) {
  17.                 $this->ext = strtoupper(pathinfo($src, PATHINFO_EXTENSION));
  18.                 if(is_file($src) && ($this->ext == "JPG" OR $this->ext == "JPEG")) {
  19.                     $this->img_r = ImageCreateFromJPEG($src);
  20.                 } elseif(is_file($src) && $this->ext == "PNG") {
  21.                     $this->img_r = ImageCreateFromPNG($src);      
  22.                 } elseif(is_file($src) && $this->ext == "GIF") {
  23.                     $this->img_r = ImageCreateFromGIF($src);
  24.                 }
  25.                 $this->img_w = imagesx($this->img_r);
  26.                 $this->img_h = imagesy($this->img_r);
  27.             }
  28.            
  29.             function resize($w = 100) {
  30.                 $h =  $this->img_h / ($this->img_w / $w);
  31.                 $this->dst_r = ImageCreateTrueColor($w, $h);
  32.                 imagecopyresampled($this->dst_r, $this->img_r, 0, 0, 0, 0, $w, $h, $this->img_w, $this->img_h);
  33.                 $this->img_r = $this->dst_r;
  34.                 $this->img_h = $h;
  35.                 $this->img_w = $w;
  36.             }
  37.            
  38.             function createFile($output_filename = null) {
  39.                 if($this->ext == "JPG" OR $this->ext == "JPEG") {
  40.                     imageJPEG($this->dst_r, $this->uploaddir.$output_filename.'.'.$this->ext, $this->quality);
  41.                 } elseif($this->ext == "PNG") {
  42.                     imagePNG($this->dst_r, $this->uploaddir.$output_filename.'.'.$this->ext);
  43.                 } elseif($this->ext == "GIF") {
  44.                     imageGIF($this->dst_r, $this->uploaddir.$output_filename.'.'.$this->ext);
  45.                 }
  46.                 $this->output = $this->uploaddir.$output_filename.'.'.$this->ext;
  47.             }
  48.            
  49.             function setUploadDir($dirname) {
  50.                 $this->uploaddir = $dirname;
  51.             }
  52.            
  53.             function flush() {
  54.         $tempFile = $_FILES['Filedata']['tmp_name'];
  55.         $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder'] . '/';
  56.         $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
  57.                
  58.                 imagedestroy($this->dst_r);
  59.                 unlink($targetFile);
  60.                 //imagedestroy($this->img_r);
  61.                
  62.             }
  63.            
  64.         }  
  65.     $prefijo = substr(md5(uniqid(rand())),0,6);
  66.     $tempFile = $_FILES['Filedata']['tmp_name'];
  67.     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
  68.     $targetFile =  str_replace('//','/',$targetPath) . $prefijo .'_' . $_FILES['Filedata']['name'];
  69.        
  70.         move_uploaded_file ($tempFile, $targetFile);
  71.        
  72.         $image = new Image();
  73.         $image->setFile($targetFile);
  74.         $image->setUploadDir($targetPath);
  75.         $image->resize(640);
  76.         $image->createFile(md5($tempFile));
  77.         $image->resize(250);
  78.         $image->createFile("s_".md5($tempFile));
  79.         $image->flush();
  80.         }
  81. ?>

Bien, la parte de php es una clase que redimensiona, me la encontre en san google y me parecio algo innovador en mis conocimientos porque de otro modo lo haria en 3000 lineas a mi manera xD, bien esta clase me redimensiona las imagenes, la cuestion que a la vez que recibo los parametros de uploadify, tambien reciba a id_user, cosa que no logro.

En cuanto a PHP, necesito guardar el id junto a las rutas de las imagenes(en total dos imagenes, una es thumb que mide 250 de w y otra normal que mide 640 de w), pero sinceramente nunca trabaje con una clase y no se como hacer para extraerle las dos rutas, intente de mil maneras, posteo el codigo "sano" porque hace 2 horas que le estoy buscando la vuelta y era un desastre..

Código PHP:
Ver original
  1. $image = new Image();
  2.         $image->setFile($targetFile);
  3.         $image->setUploadDir($targetPath);
  4.         $image->resize(640);
  5.         $image->createFile(md5($tempFile));
  6.         $image->resize(250);
  7.         $image->createFile("s_".md5($tempFile));
  8.         $image->flush();

Lo posteo en PHP porque creo que la mayoria sabe manipular estos dos lenguajes, digamos que tambien ajax y JS...

Bueno. eso es todo creo jaja, saludos y espero respuestas, ya me duele la cabeza :P
__________________
Mi primera web: http://www.mascoteame.com