PHP - ftp_get me descarga un archivo vacio

 
Vista:

ftp_get me descarga un archivo vacio

Publicado por Marsh_Spider (1 intervención) el 26/02/2010 00:00:51
Hola

Soy nueva usando PHP

A) Tengo q hacer un repositorio de info de usuarios y deben tener acceso a archivos doc, jpg, etc y videos avi. Las condiciones son que los videos se guarden y descarguen desde FTP. Los archivos diferentes se guarden y descarguen desde DB.
B) Estos archivos PHP solo son para UPLAOD y DOWNLOAD.
C) En MySQL creé "t_prueba_cont" y los campos "id_contenido (integer, auto_inc, not null), nombre(varchar 45, not null), tamano(integer, not null), tipo(varchar45, not null), contenido (longblob) y fecha(datetime)"

1°) Formulario para subir los archivos (pruebaindex.php):
<html>
<body>
<form enctype='multipart/form-data' action='pruebaupload.php' method='post'>
<input type='hidden' name='MAX_FILE_SIZE' value='1000000000'>
<input type='hidden' name='completed' value='1'>
Por favor elige el archivo deseas cargar:
<input type='file' name='imagefile'><br>
<input type='submit' value='Subir Archivo'>
</form><br>
</body>
</html>

2°) Archivo para procesar la subida a la BD o al sitio FTP (pruebaupload.php):
<?php
session_start();
if ((($_FILES["imagefile"]["type"] == "text/plain")
|| ($_FILES["imagefile"]["type"] == "application/pdf")
|| ($_FILES["imagefile"]["type"] == "application/msword")
|| ($_FILES["imagefile"]["type"] == "application/vnd.ms-excel")
|| ($_FILES["imagefile"]["type"] == "application/vnd.ms-powerpoint")
|| ($_FILES["imagefile"]["type"] == "audio/wav")
|| ($_FILES["imagefile"]["type"] == "audio/mpeg")
|| ($_FILES["imagefile"]["type"] == "audio/x-mpeg")
|| ($_FILES["imagefile"]["type"] == "audio/mpeg")
|| ($_FILES["imagefile"]["type"] == "audio/mpeg3")
|| ($_FILES["imagefile"]["type"] == "audio/mpg")
|| ($_FILES["imagefile"]["type"] == "image/gif")
|| ($_FILES["imagefile"]["type"] == "image/png")
|| ($_FILES["imagefile"]["type"] == "image/tif")
|| ($_FILES["imagefile"]["type"] == "image/jpg")
|| ($_FILES["imagefile"]["type"] == "image/jpeg")
|| ($_FILES["imagefile"]["type"] == "image/pjpeg")
|| ($_FILES["imagefile"]["type"] == "image/bmp")
|| ($_FILES["imagefile"]["type"] == "video/mpeg")
|| ($_FILES["imagefile"]["type"] == "video/avi"))
&& ($_FILES["imagefile"]["size"] < 1000000000))
{
if ($_FILES["imagefile"]["error"] > 0)
{
echo "Sucedio un error: " . $_FILES["imagefile"]["error"] . "<br />";
}
else
{
echo "Archivo q se cargará: " . $_FILES["imagefile"]["name"] . "<br />";
$name = $_FILES["imagefile"]["name"];
echo "Tipo: " . $_FILES["imagefile"]["type"] . "<br />";
$type = $_FILES["imagefile"]["type"];
echo "Tamaño: " . ($_FILES["imagefile"]["size"] / 1024) . " Kb<br />";
$size = $_FILES["imagefile"]["size"];
echo "Tmp almacenado en: " . $_FILES["imagefile"]["tmp_name"] . "<br />";
$temp_name = $_FILES["imagefile"]["tmp_name"];
$hoy = date("Y/m/d H:i:s");
$_SESSION['nombre'] = $name;
$_SESSION['tipo'] = $type;
$_SESSION['tamano'] = $size;
$_SESSION['nombre_tmp'] = $temp_name;
$archivo = fopen($temp_name,'rb');
$contenido = fread($archivo, filesize($temp_name));
$contenido = addslashes($contenido);
fclose($archivo);
if ($_FILES["imagefile"]["type"] == "video/avi")
{
$servidor_ftp = "127.0.0.1";
$conexion_id = ftp_connect($servidor_ftp);
$ftp_usuario = "[COLOR="Yellow"]user[/COLOR]";
$ftp_clave = "[COLOR="Yellow"]pass[/COLOR]";
$nombre_subir = $name;
$manipulado = fopen($temp_name, 'rb');
$resultado_login = ftp_login($conexion_id, $ftp_usuario, $ftp_clave);
if ((!$conexion_id) || (!$resultado_login))
{
echo "La conexion ha fallado! al conectar con $servidor_ftp para usuario $ftp_usuario" . "<br />";
exit;
}
else
{
echo "Conectado al sitio $servidor_ftp, para usuario $ftp_usuario" . "<br />";
}
ftp_pasv ($conexion_id, true);
$upload = ftp_fput($conexion_id, $nombre_subir, $manipulado, FTP_BINARY);
if (!$upload)
{
echo "Ha ocurrido un error al subir el archivo" . "<br />";
}
else
{
echo "Copia de $nombre_subir al server FTP $servidor_ftp" . "<br />";
$errmsg = "Subido el archivo a la carpeta carga_ftp_tmp";
}
ftp_close($conexion_id);
fclose($manipulado);
echo"Estado de la operación: $errmsg" . "<br />";
echo'
Click <a href=downloadftp.php>aqui</a> para descargar el ultimo archivo.<br>
</form>
Click <a href=pruebaindex.php>aqui</a> para cargar otro archivo.
';
}
else
{
$conecta = mysql_connect("localhost","[COLOR="Yellow"]user[/COLOR]","[COLOR="Yellow"]pass"[/COLOR]);
echo "Hasta aqui estoy conectada a la BD" . "<br />";
$errmsg = "";
if ($size == (NULL && $size == ""))
{
echo "El archivo no contiene nada, no se insertará nada a la BD... intentalo nuevamente" . "<br />";
$errmsg = "No se insertó nada a la BD" . "<br />";
}
else
{
if (!$conecta)
{
$errmsg = "No se ha podido contectar a la BD";
}
@mysql_select_db("prueba");

if ($errmsg == "")
{
if ($_REQUEST[completed] == 1)
{
if ($size < 1000000000)
{
$sql = mysql_query('SELECT MAX(id_contenido) AS idtemp FROM t_prueba_cont', $conecta);
//echo "Identifica el ID" . "<br />";
while ($row = mysql_fetch_array($sql))
{
$id_conte = $row['idtemp'][0] + 1;
//echo "Suma 1 a id" . "<br />";
$_SESSION['id'] = $id_conte;
echo"Esta es la fila # $id_conte que se insertará" . "<br />";
}
mysql_query ("INSERT INTO t_prueba_cont VALUES ('$id_conte','$name','$size','$type','$contenido', '$hoy')") or die('Error, query falló...');
echo "Datos insertados, revisa la DB..." . "<br />";
echo'
Click <a href=downloadbd.php>aqui</a> para descargar el ultimo archivo.<br>
</form>
Click <a href=pruebaindex.php>aqui</a> para cargar otro archivo.
';
}
else
{
echo "Archivo demaciado grande...!";
}
}
else
{
echo "Envío no completado...";
}
}
@mysql_close ($conecta);
}
}
}
}
else
{
echo "Archivo Invalido..." . "<br />";
}
?>

3°) Archivo para descargar desde la BD(downloadbd.php):

<?php ob_start(); ?>
<?php
session_start();
//Toma de variables de sesión
$name = $_SESSION['nombre'];
$type = $_SESSION['tipo'];
$size = $_SESSION['tamano'];
$id_conte = $_SESSION['id'];
$explod = explode(".", $name);
$ext = $explod[sizeof($explod)-1];
$base = "prueba";
$conecta = @mysql_connect("localhost","root","cemsmgr75") or die('Error, conexión falló...');
$select = @mysql_select_db($base, $conecta);
$sql = "SELECT contenido FROM t_prueba_cont WHERE id_contenido ='".$id_conte."'";
$resultado = @mysql_query($sql);
if (mysql_num_rows($resultado)== 1)
{
$dato_binario = mysql_result($resultado, 0, "contenido");
}
else
{
echo "No está traiendo nada el query...";
}

if ((eregi("jpg",$ext))||(eregi("png",$ext))||(eregi("gif",$ext))||(eregi("bmp",$ext))||(eregi("txt",$ext))||(eregi("doc",$ext))||(eregi("xls",$ext))||(eregi("ppt",$ext))||(eregi("pps",$ext))||(eregi("pdf",$ext)))
{
header("Content-type: $type");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename= $name");
header("Content-Description: PHP Generated Data");
header("Content-Transfer-Encoding: binary");
echo $dato_binario;
}
mysql_close ($conecta);
?>
<?php ob_end_flush(); ?>

[COLOR="Red"]4°) Archivo para descargar desde FTP(downloadftp.php):

** Aqui está el problema, al descargar el archivo, me lo descarga VACIO y no sé porque!, pienso que es xq hace falta interpretar bien la función "ftp_get"
Al revisar el archivo abriéndolo con notepad no me muestra ningún error.

<?php ob_start(); ?>
<?php
session_start();
$name = $_SESSION[nombre];
$type = $_SESSION[tipo];
$ruta = "carga_ftp_tmp/";
$temp_name = $ruta.$name;
$servidor_ftp = "127.0.0.1";
$conexion_id = ftp_connect($servidor_ftp);
$ftp_usuario = "marcela";
$ftp_clave = "cemsmgr75";
$nombre_bajar = $name;
$resultado_login = ftp_login($conexion_id, $ftp_usuario, $ftp_clave);
if ((!$conexion_id) || (!$resultado_login))
{
echo "La conexion ha fallado! al conectar con $servidor_ftp para usuario $ftp_usuario" . "<br />";
exit;
}
else
{
ftp_pasv ($conexion_id, true);
$download = ftp_get($conexion_id, $temp_name, $nombre_bajar, FTP_BINARY);
if (!$download)
{
echo "Ha ocurrido un error al descargar el archivo" . "<br />";
}
else
{
echo "Copia de $nombre_bajar desde el server FTP al equipo del usuario" . "<br />";
}
header("Content-type: $type");
header("Content-Disposition: attachment; filename= $name");
header("Content-Description: PHP Generated Data");
header("Content-Transfer-Encoding: binary");
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
echo "$download";
}
ftp_close($conexion_id);
?>
<?php ob_end_flush(); ?> [/COLOR]

¿Que estoy haciendo mal en esto ultimo?
Agradezco su apreciable ayuda.

Marsh_Sipder
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder