Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/05/2013, 08:14
fido-strike
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: PHP no toma valores enviados de form con javascript

Cita:
Iniciado por Nemutagk Ver Mensaje
Sin saber mas ni ver mas código como es que guardas los archivos (DE NUEVO), solo queda pensar que el archivo sobrepasa el tiempo limite de ejecución o sobrepasa el peso limite para subir archivos, no sabemos que tipo de archivos subes (su peso) así que esto es estar adivinando con los pedazos de código que sueltas
Tienes razon, disculpa que no haya adjuntado todo el codigo, pero es que es un poco largo.

Aqui esta tal cual lo tengo:

Este es el Form:
Código HTML:
Ver original
  1. <form enctype="multipart/form-data" name="uploadform" id="uploadform" action="PageUpload.php?page=mp3&subir=si" method="post">
  2.                 <input type="hidden" name="enviarya" id="enviarya" value="si"/>
  3.                 <div id="BotonExa">
  4.                 </div>
  5.                 <div id="DescriptionUpload">
  6.                 Solo se admiten archivos Mp3, y puedes subir hasta 5 pistas cada vez.
  7.                 </div>
  8.                 <div id="SubmitBoton" onclick="javascript: RevisarSubir('uploadform');">
  9.                     Subir
  10.                 </div>
  11.                 <div id="ProcessLoad" style="float: left; width: 750px; display: none; text-align: center; color: white;">
  12.                     Subiendo...(si estas subiendo varios archivos a la vez, ten paciencia, es normal que tarde un poco.)
  13.                     <br/><img src="http://music-strike.net/images/subiendo.gif" style="width: 750px; height: 5px; margin-bottom: 5px;"/>
  14.                 </div>
  15.                 <h2 style="float: left; padding: 5px; margin-bottom: 0px; background: #151515; width: 760px; border: black 1px solid; border-bottom: 0px; font-size: 1.2em;">Lista de archivos</h2>
  16.                 <script type="text/javascript">
  17.                     upload = new adekMultiUpload('uploadform',5,[".mp3"],'file');
  18.                     upload.init();
  19.                 </script>
  20.             </form>

Y este es el codigo javascript que hace el multiupload (adekMultiUpload()):
Código Javascript:
Ver original
  1. function adekMultiUpload(uploadform,max_rows,ext_array,input_prefix) {
  2.  
  3.     this.max_rows = max_rows;
  4.     this.ext_array = ext_array;
  5.     this.count = 0;
  6.     this.j = 0;
  7.    
  8.     this.CheckInputExt = function(id) {
  9.    
  10.         allow = false;
  11.         var file = document.getElementById(input_prefix+'_'+id).value;
  12.         var dot = file.lastIndexOf('.');
  13.    
  14.         if (dot != -1) {
  15.             var extension = file.substr(dot,file.length);
  16.                 for (var i = 0; i < ext_array.length; i++) {
  17.                 if (ext_array[i] == extension) { allow = true; break; }
  18.                 }
  19.                         }              
  20.         if (allow) { return true; }
  21.         else {
  22.         this.remove_div(input_prefix+'_'+id);
  23.         this.add_new_row();
  24.         alert("Alert! Bad file format.\nAccepted extensions are: "
  25.         + (ext_array.join("  ")) + "\n");
  26.         return false;
  27.             }
  28.         };
  29.    
  30.     this.init = function() {
  31.     var div_inputs = document.createElement( 'div' );
  32.         div_inputs.id = input_prefix+'_inputs';
  33.     var div_uploadlist = document.createElement( 'div' );
  34.         div_uploadlist.id = input_prefix+'_uploadlist';
  35.         document.getElementById('uploadform').appendChild(div_inputs);
  36.         document.getElementById('uploadform').appendChild(div_uploadlist);
  37.     this.add_new_row();
  38.     }
  39.    
  40.     this.remove_div = function(id) {
  41.             el = document.getElementById(id)
  42.             el.parentNode.removeChild(el);
  43.         };
  44.    
  45.    
  46.     this.add_new_row = function()
  47.     {
  48.       if(this.count >= this.max_rows)
  49.         return false;
  50.        
  51.         var i = document.getElementById(input_prefix+'_inputs');
  52.         //Create new input button
  53.         var dividjs = 'file_' + (this.j+1);
  54.         var refjs = 'javascript: CargarExaminar("'+dividjs+'")';
  55.         var new_input = document.createElement( 'input' );
  56.         new_input.type = 'file';
  57.         new_input.name =input_prefix+'[]';
  58.         new_input.id = input_prefix+'_' + (this.j+1);
  59.         new_input.selector = this;
  60.         new_input.style.display= 'none';
  61.         new_input.onchange = function(){
  62.         this.selector.update_input(this.selector.j+1);
  63.         };
  64.         // Add new element
  65.         i.appendChild(new_input);
  66.         document.getElementById('BotonExa').innerHTML = "<div id='boton' onclick='"+refjs+"'>Examinar</div>";
  67.     };
  68.    
  69.    
  70.     this.delete_row = function(id)
  71.     {
  72.       if(this.count == 1){return false};
  73.       var upload_files = document.getElementById(input_prefix+'_uploadlist');
  74.       this.remove_div(input_prefix+'_'+id);
  75.       this.remove_div(input_prefix+'_del'+id);
  76.       this.count--;
  77.       if(this.count+1 == this.max_rows){this.add_new_row();};
  78.     };
  79.    
  80.     this.update_input = function(id) {
  81.       if( (this.count >= this.max_rows) || (this.CheckInputExt(id)==false) )
  82.         return false;
  83.         var ObjectName = this;
  84.         var upload_files = document.getElementById(input_prefix+'_uploadlist');
  85.         //Files list: Filename
  86.         var new_delete = document.createElement( 'div' );
  87.         new_delete.id = input_prefix+'_del' + id;
  88.         new_delete.className = 'Subidos';
  89.         new_delete.innerHTML = "&raquo; "+document.getElementById(input_prefix+'_'+id).value;
  90.         //Files list: Delete button
  91.         var del_button = document.createElement( 'div' );
  92.         del_button.className = 'DeleteSubido';
  93.         del_button.selector = this;
  94.         del_button.onclick = function(){
  95.         this.selector.delete_row(id);
  96.         };
  97.         //Creamos form para datos
  98.         var DateMp3 = document.createElement('div');
  99.         DateMp3.className = "DatosMp3";
  100.         var Caja1 = document.createElement('div');
  101.         Caja1.className = "CajaDateMp3";
  102.         Caja1.innerHTML = " Artista/Grupo<br/><input type='text' name='artista[]' id='artista_"+id+"'/>";
  103.         var Caja2 = document.createElement('div');
  104.         Caja2.className = "CajaDateMp3";
  105.         Caja2.innerHTML = " Titulo<br/><input type='text' name='titulo[]' id='titulo_"+id+"'/>";
  106.         var Caja3 = document.createElement('div');
  107.         Caja3.className = "CajaDateMp3";
  108.         Caja3.innerHTML = " Genero musical<br/><input type='text' name='genero[]' id='genero_"+id+"'/>";
  109.         DateMp3.appendChild(Caja1);
  110.         DateMp3.appendChild(Caja2);
  111.         DateMp3.appendChild(Caja3);
  112.        
  113.         //Create list row
  114.         upload_files.appendChild(new_delete);
  115.         new_delete.appendChild(del_button);
  116.         new_delete.appendChild(DateMp3);
  117.         //Counters ++
  118.         this.count++;
  119.         this.j++;
  120.         //Hide input and add another
  121.         var o = document.getElementById(input_prefix+'_'+id);
  122.         o.style.position = 'absolute';
  123.         o.style.left = '-1920px';
  124.         this.add_new_row();
  125.     };
  126.  
  127. };

Y este es el PHP que procesa lo enviado:
Código PHP:
Ver original
  1. if(is_array($_POST['artista'])){
  2.                         $valido = 9;
  3.                         $subidos = 0;
  4.                         $ip = $_SERVER[REMOTE_ADDR];
  5.                         $fecha = date("Y-m-d",time());
  6.                         $filepath = getcwd()."/tmp/mp3pending/";
  7.                         $forpath = split("-",$fecha);
  8.                         $pathano = $filepath.$forpath[0]."/";
  9.                         $pathmes = $pathano.$forpath[1]."/";
  10.                         $pathdia = $pathmes.$forpath[2]."/";
  11.                         if(!file_exists($pathano)){ mkdir($pathano,0777); }
  12.                         if(!file_exists($pathmes)){ mkdir($pathmes,0777); }
  13.                         if(!file_exists($pathdia)){ mkdir($pathdia,0777); }
  14.                         $path = $pathdia;
  15.                         chmod($path,0777);
  16.  
  17.                         for($i=0;$i<=count($_POST['artista'])-1;$i++){
  18.                            
  19.                             $artista = htmlspecialchars(limp($_POST['artista'][$i]));
  20.                             $titulo = htmlspecialchars(limp($_POST['titulo'][$i]));
  21.                             $genero = htmlspecialchars(limp($_POST['genero'][$i]));            
  22.                             $name = substr(md5(uniqid(rand())),0,10).".mp3";
  23.                             $name_ori = $_FILES['file']['name'][$i];
  24.                             $name_input = "C:\fakepath\".$name_ori;
  25.                             $size = $_FILES['file']['size'][$i];
  26.                             $url = "http://music-strike.net/".str_replace('/home/music/public_html/','',$path.$name);
  27.                            
  28.                             if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $path.$name)){
  29.                                 $subidos++;
  30.                                 chmod($path.$name, 0777);
  31.                                 $sql = "INSERT INTO music_pend (genero,artista,titulo,name_actu,name_ori,size,url,user_id,fecha,ip,valido) VALUES ('$genero','$artista','$titulo','$name','$name_ori','$size','$url','$user_id','$fecha','$ip','$valido')";
  32.                                 $consulta = mysql_query($sql);
  33.                             }
  34.                         }
  35.                         if($subidos==1){
  36.                             echo "<center><img src='http://music-strike.net/images/icons/bien.png'/><br/> <span style='color: green; font-size: 1.3em;'>Archivo subido exitosamente!</span></center>";
  37.                         }else{
  38.                             echo "<center><img src='http://music-strike.net/images/icons/bien.png'/><br/>  <span style='color: green; font-size: 1.3em;'>Archivos subidos exitosamente!</span></center>";
  39.                         }
  40.                 }else{
  41.                     echo "vuelve a mostrar como que no se ha enviado";
  42.                 }

Como veras, en ningún lado no defino ningún tipo de capacidad, por lo cual imagino que no deberia a haber problemas, pero...

Solo se admiten archivos MP3, temas que van entre 1 y 5 minutos o mas, lo que son estandar, una media de 6MB por archivo y hasta un maximo de 5 archivos. Pero ya te digo el codigo en principio parece que esta todo bien, por eso es que no veia la necesidad de publicarlo, lo mas probable segun parece es que el problema trate de eso que mencionas, tiempo de ejecucion o el limite de archivos a subir