royale net lights uploadify

lights - uploadify.net download



Uploadify: muestra el mensaje de error de la respuesta HTTP (4)

Si el servidor devuelve un error (código de respuesta HTTP! = 200) al cargar un archivo con Uploadify, el archivo cargado aparece en un fondo rojo y se muestra un mensaje como este:

file.jpg (52.78KB) - HTTP Error

lo que indica que hubo un error de HTTP. Pero eso no es muy útil para el usuario. ¿Cómo puedo hacer que muestre un mensaje de error más detallado? Me gusta: ''¿No es una imagen válida'' o ''Cuota llena''?

Estaba pensando en pasar esos mensajes en el cuerpo de respuesta HTTP, pero Uploadify no los recoge. ¿Hay alguna forma conocida de pasar los mensajes de error a Uploadify?


Desafortunadamente, el evento onUploadError no tiene acceso al cuerpo de respuesta. Tendrá que devolver 200 estados y manejar los errores en onUploadSuccess por lo que yo sé.

Así es como lo estoy haciendo:

''onUploadSuccess'' : function(file, data, response) { var responseObj = JSON.parse(data); if(responseObj.error_message) { $("#" + file.id).hide(); // this will hide the misleading "complete" message.. alert(responseObj.error_message); return; } }

O mejor aún, podría reemplazar el mensaje "completo" con su mensaje de error así:

''onUploadSuccess'' : function(file, data, response) { var responseObj = JSON.parse(data); if(responseObj.error_message) { $("#" + file.id).find(''.data'').css(''color'', ''red'').html('' - '' + responseObj.error_message); return; } console.log(file, data, response); }


Eche un vistazo a estas dos publicaciones en el foro de uploadify sobre cómo manejar los errores.

onError para mostrar lo que está sucediendo y cargar informes de errores de script

Hay mucha información útil allí.

Actualizar

Lo siguiente parece hacer el truco para mí ..

''onComplete'': function(a, b, c, d, e){ if (d !== ''1'') { alert(d); } else { alert(''Filename: '' + c.name + '' was uploaded''); } }

junto con esta versión del script uploadify

<?php if (!empty($_FILES)) { $tempFile = $_FILES[''userfile''][''tmp_name'']; $targetPath = $_SERVER[''DOCUMENT_ROOT''] . $_REQUEST[''folder''] . ''/''; $targetFile = str_replace(''//'',''/'',$targetPath) . $_FILES[''userfile''][''name'']; move_uploaded_file($tempFile,$targetFile); switch ($_FILES[''userfile''][''error'']) { case 0: $msg = ""; // comment this out if you don''t want a message to appear on success. break; case 1: $msg = "The file is bigger than this PHP installation allows"; break; case 2: $msg = "The file is bigger than this form allows"; break; case 3: $msg = "Only part of the file was uploaded"; break; case 4: $msg = "No file was uploaded"; break; case 6: $msg = "Missing a temporary folder"; break; case 7: $msg = "Failed to write file to disk"; break; case 8: $msg = "File upload stopped by extension"; break; default: $msg = "unknown error ".$_FILES[''userfile''][''error'']; break; } } if ($msg) { $stringData = "Error: ".$_FILES[''userfile''][''error'']." Error Info: ".$msg; } else { $stringData = "1"; } // This is required for onComplete to fire on Mac OSX echo $stringData; ?>


He tenido el mismo problema. Después de buscar por horas encontré el problema. He configurado "servidor proxy" en mi "Opciones de Internet-> Configuración de LAN", y cuando lo devolví al estado predeterminado, la carga funcionó nuevamente.


Para la versión 3.0+ de uploadify, eche un vistazo a la opción onUploadSuccess , específicamente la variable llamada datos con nombre, que tendrá el eco del servidor. Si le haces eco a JSON recuerda decodificarlo así:

... ''onUploadSuccess'' : function(file, data, response) { if (response){ var json_data=JSON.decode(data); /* code here */ } }, ....