Ver Mensaje Individual
  #11 (permalink)  
Antiguo 29/07/2014, 12:07
Avatar de fhederico
fhederico
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 4 meses
Puntos: 23
Respuesta: setRequestHeader en jquery

Perfecto,

El problema es que cuando subias tu archivo y este contenia caracteres extraños al convertilo en JSON este no los reconocia por lo cual te retornaba "null" y al eliminar tomaba este mismo nombre y lo intentaba eliminar, por eso nunca lo encontraba y no lo eliminaba, te dejo la correccion funcional, no es lo mas optimo, pero te servira para continuar

HTML

Código Javascript:
Ver original
  1. $(document).ready(function()
  2.             {
  3.                 var settings = {
  4.                     url: "upload.php",
  5.                     dragDrop:true,
  6.                     fileName: "myfile",
  7.                     allowedTypes:"jpg,png,gif,doc,pdf,zip",
  8.                     returnType:"json",
  9.                         onSuccess:function(files,data,xhr)
  10.                         {
  11.                             alert(data);
  12.                         },
  13.                     showDelete:true,
  14.                     deleteCallback: function(data,pd)
  15.                     {
  16.                         for(var i=0;i<data.length;i++)
  17.                         {
  18.                             $.ajax({
  19.                                 type: "POST",
  20.                                 url: "delete.php",
  21.                                 data: {op:"delete",name:data[i]},
  22.                                 success: function(data, textStatus, XMLHttpRequest)
  23.                                 {
  24.                                     alert(data);
  25.                                     pd.statusbar.hide(); //You choice to hide/not.
  26.                                 },
  27.                                 error: function(data, textStatus, XMLHttpRequest)
  28.                                 {
  29.                                     alert(data);
  30.                                 }
  31.                             });
  32.                         }
  33.                        
  34.                     }
  35.                 }
  36.                 var uploadObj = $("#mulitplefileuploader").uploadFile(settings);
  37.             });

Aqui solo cambie tu "post" por un Ajax, ya que me servia para depurar en caso de error o exito

UPLOAD.PHP

Código PHP:
Ver original
  1. <?php
  2.  
  3. $output_dir = "uploads/";
  4. if(isset($_FILES["myfile"]))
  5. {
  6.     $ret = array();
  7.  
  8.     $error =$_FILES["myfile"]["error"];
  9.     //You need to handle  both cases
  10.     //If Any browser does not support serializing of multiple files using FormData()
  11.     if(!is_array($_FILES["myfile"]["name"])) //single file
  12.     {
  13.         $fileName = html_entity_decode(utf8_encode($_FILES["myfile"]["name"] ));
  14.         move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$fileName);
  15.         $ret[]= $fileName;
  16.     }
  17.     else  //Multiple files, file[]
  18.     {
  19.       $fileCount = count($_FILES["myfile"]["name"]);
  20.       for($i=0; $i < $fileCount; $i++)
  21.       {
  22.         $fileName = html_entity_decode(utf8_encode($_FILES["myfile"]["name"] ));
  23.         move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName);
  24.         $ret[]= $fileName;
  25.       }
  26.     }
  27.    
  28.     echo json_encode($ret);
  29.  }

Aqui cambie la parte donde codificabas el nombre


DELETE.PHP

Código PHP:
Ver original
  1. <?php
  2.  
  3. $output_dir = "uploads/";
  4. $fileName = $_POST['name'];
  5.  
  6. if(isset($_POST["op"]) && $_POST["op"] == "delete" && isset($fileName))
  7. {
  8.     $filePath = $output_dir. $fileName;
  9.     if (file_exists($filePath))
  10.     {
  11.         unlink($filePath);
  12.         echo "Deleted File ".$fileName."<br>";
  13.     }
  14.     else
  15.         echo "no existe '".$fileName."'<br>";
  16. }

Aqui como nuestro Upload nos retorna el nombre que guardo no debemos hacer nada mas con dicho nombre, de lo contrario no lo encontrara, solo debemos tomarlo y procesarlo y listo ;)

Una ultima cosa, actualmente el cierre de las etiquetas php (?>) ya no se ocupa, es decir, solo se abre (<?php) y no se deja la etiqueta de cierra ;)

Saludos
__________________
Si encuentras que tu pregunta fue respondida, se agradeceria enormemente que la marcaras como solucionada... si... es el boton verde gigante que esta al final de la pagina :)