2011-03-18 15 views
6

He encontrado algunas publicaciones con el mismo problema que tengo, sin embargo, no se presentaron soluciones. No estoy 100% seguro de qué hacer con esto, pero espero que puedas ayudar.Uploadify no cargando archivo, pero indica éxito

Estoy intentando utilizar Uploadify para subir archivos, pero ocurre lo siguiente:

  1. Buscar archivo de éxito (de ahí mi 'script' y 'subidos' atributos son correctos)
  2. Barra de progreso dice " 100% "y completa.
  3. encendidos completos diciendo que la carga fue exitosa (según el path alerted, el atributo 'carpeta' es correcto.)
  4. Si muero mi script antes de cualquier salida, el paso # 3 no ocurre, por lo tanto llega al 'script' especificado. Después de la salida, la secuencia de comandos no muere.
  5. ARCHIVO NO SE ENCUENTRA EN SISTEMA DE ARCHIVOS

No estoy seguro de cómo esto es posible - por lo que yo puedo decir, todo está correcto.

Aquí está mi código:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#addimage").validationEngine(); 
     $('#imagefile').uploadify({ 
      'uploader': "/js/uploadify/uploadify.swf", 
      'fileExt': "*.jpg;*.jpeg;*.png;*.gif", 
      'buttonText': "Browse...", 
      'script': "/js/uploadify/uploadify.php", 
      'cancelImg': "/js/uploadify/cancel.png", 
      'folder': "/uploads", 
      'fileDesc': 'Only *.jpg, *.jpeg, *.png, *.gif are allowed', 
      'auto': true, 
      'onComplete': function(event, ID, fileObj, response, data) { 
       $('#name').val('Please edit this text to add a description...'); 
       alert('Uploaded ' + fileObj.name + ' to ' + fileObj.filePath + '.'); 
      } 
     });   
    }); 
</script> 

<input type="file" id="imagefile" name="imagefile" /> 

<?php 

    if (!empty($_FILES)) { 
     $tempFile = $_FILES['Filedata']['tmp_name']; 
     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; 
     $targetFile = str_replace('//', '/', $targetPath) . 'image_' . date('YmdHis') . '_' . $_FILES['Filedata']['name']; 
     move_uploaded_file($tempFile,$targetFile); 
     echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile); 
    } 

?> 

único cambio de la secuencia de comandos PHP es el nombre de la TARGETFILE que he cambiado, para asegurar algún tipo de nombre de archivo único (aunque no infalible) pero por lo demás el guión es el igual que liberado (con comentarios eliminados aquí para fines de brevedad).

¿Alguien puede decirme por qué Uploadify indica que la carga del archivo fue exitosa, pero no existe ningún archivo en el directorio de carga? Estoy usando Windows, PHP5.3, y la carpeta de carga es de escritura (puedo cargar archivos allí sin Uploadify, pero no con ella)

¡Gracias de antemano!

Kobus

Respuesta

0

Tuve problemas similares en una máquina Linux. Resultó que la configuración de PHP en mi servidor era cuplrit. PHP se estaba ejecutando en modo seguro. Como había cargado los scripts de Uploadify a través de FTP, los archivos de script se almacenaban en el sistema de archivos con mis datos de usuario de FTP. Como la carpeta temporal de PHP era propiedad de la raíz del servidor, tenía una discrepancia de UID, es decir, el archivo de carga temporal se atribuía a la raíz mientras que el script de carga que intentaba moverlo era propiedad del usuario de FTP. Eso lo fragmentó.

Para resolver esto, cambié la propiedad de la secuencia de comandos uploadify php a root y desde allí funcionó.