Tengo algo que parece sencillo de resolver pero no lo he logrado.
Desde una página selecciono un archivo y un nombre standard, se abre una nueva ventana a la que se le envía todo por POST y es la que sube el archivo y registra la subida en la Base de datos.
Todo me funciona a la perfección. Lo que suscede es que la pagina que sube los archivos, no tiene nada de HTML y le coloqué un gráfico para que mostrara en los segundos ue demora la subida del archivo para que no se vea en blanco absoluto, pero no me muestra el gráfico.
He leido sobre esto y es algo que hay que hacer con buferes de salida para que se muestre algo mientras php hace un proceso, etc, he probado varias cosas pero la verdad no lo logro es tan simple como poder mostrar un mensaje de "subiendo" mientras la página hace el proceso.
Se podrás solucionar esto con algo como :
Código PHP:
ob_start();
echo "Loading.................";
ob_end_clean();
Este es el form que envía lo que se va a subir :
Código PHP:
<form action="new_claim_file.php"
method="post" enctype="multipart/form-data" name="form2" target="New Claim File"
id="form2" onsubmit="estado=verificarFormu(this);if(estado==true)
window.open('new_provider_file.php', 'New Claim File'); return estado">
Código PHP:
<?
$standard=$_POST['standard_name*'];
$c_id=$_POST['claim_id'];
//Buscamos si el caso tiene archivos con ese standard name y seleccionamos el más reciente -El de mayor ID-
mysql_select_db($database_domain, $domain);
$result3 = mysql_db_query("domain","SELECT name from claim_file WHERE claim_id='$c_id' AND claim_file_id IN (SELECT Max(claim_file_id) from claim_file WHERE name like'$standard%')");
while($row = mysql_fetch_array($result3))
{
$last_name=$row["name"];
}
echo $last_name;
$array_name = explode("-", $last_name);
//Tomamos el nombre antes del -
$name_last_name=$array_name[0];
//Tomamos el valor del consecutivo y lo aumentamos en 1
$consec=$array_name[1]+1;
//Armamos el nuevo standard_name completo (sin extensión) para el nuevo archivo
$new_name=$standard."-".$consec;
//Hacemos la busqueda del country del proveedor para construir la ruta de subida de los archivos
mysql_select_db($database_domain, $domain);
$result2 = mysql_db_query("domain","SELECT provider_id, country, company_name, provider_id FROM provider WHERE company_name='".$_POST['provider']."'");
while($row = mysql_fetch_array($result2))
{
$claim_id=$_POST['claim_id'];
$country=$row["country"];
$company_name=$_POST['provider'];
}
//Inicializamos la variable $file_name
$file_name="";
//Le asignamos el valor que recibimos del form
$file_name=$_FILES['input_file*']['name'];
//Tomamos el nombre del archivo
$name=$new_name;
//Tomamos la extensión del archivo
$extension=substr($file_name, strlen($file_name)- 3);
$namec=$new_name.".".$extension;
//Construimos la ruta a la que se subirá el archivo
$path="../../files/domain/$country/Providers/$company_name/Claims/$claim_id/";
//Tomamos valores para insertar en la BD los datos del file
$upload_date = date("Y/m/d");
$upoload_hour_2 =date("H:i:s");
$file_size = round( $_FILES['input_file*']['size'] / 1024, 2);
$uploaded_by=$_SESSION['usuario_name'];
//Mensaje en caso de que no se suba el archivo correctamente
if (!copy($HTTP_POST_FILES['input_file*']['tmp_name'],$path.$namec)){
$subido="yes";
echo "Failed to copy $file_name...\n";
}
//Si el archivos se sube correctamente insertamos los datos del archivo en la BD
if ($subido!="yes")
{
$insercion=mysql_db_query ("domain","INSERT INTO claim_file (claim_id, path, file_name,
upload_date, upload_hour, file_size, uploaded_by, name, extension)
VALUES
('$claim_id','$path','$namec','$upload_date', '$upoload_hour_2', '$file_size','$uploaded_by', '$name', '$extension')");
//Cerramos la ventana y refrescamos la ventana padre
echo "<script>window.opener.location.reload(); window.close();</script>";exit;
}
?>