Hola
Me llamo Marcela Rangel soy nueva usando PHP
** Sugiero poner mas espacio para nuestras preguntas, tuve que quitar todos los comentarios del código, pues solo te permite 10,000 caracteres.
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 y demás 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)"
Código PHP:
Ver original1°) 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
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'); if ($_FILES["imagefile"]["type"] == "video/avi") {
$servidor_ftp = "127.0.0.1";
$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 />";
} else {
echo "Conectado al sitio $servidor_ftp, para usuario $ftp_usuario" . "<br />"; }
$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"; }
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";
}
if ($errmsg == "") {
if ($_REQUEST[completed] == 1)
{
if ($size < 1000000000) {
$sql = mysql_query('SELECT MAX(id_contenido) AS idtemp FROM t_prueba_cont', $conecta); $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...";
}
}
}
}
}
}
else
{
echo "Archivo Invalido..." . "<br />";
}
?>
3°) Archivo para descargar desde la BD(downloadbd.php):
<?php
//Toma de variables de sesión
$name = $_SESSION['nombre'];
$type = $_SESSION['tipo'];
$size = $_SESSION['tamano'];
$id_conte = $_SESSION['id'];
$ext = $explod[sizeof($explod)-1]; $base = "prueba";
$conecta = @mysql_connect("localhost","root","cemsmgr75") or
die('Error, conexión falló...'); $sql = "SELECT contenido FROM t_prueba_cont WHERE id_contenido ='".$id_conte."'";
{
}
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;
}
?>
[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
$name = $_SESSION[nombre];
$type = $_SESSION[tipo];
$ruta = "carga_ftp_tmp/";
$temp_name = $ruta.$name;
$servidor_ftp = "127.0.0.1";
$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 />";
}
else
{
$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";
}
?>
¿Que estoy haciendo mal en esto ultimo?
Agradezco su apreciable ayuda.
Marsh_Sipder