Foros del Web » Programando para Internet » PHP »

upload de imagenes

Estas en el tema de upload de imagenes en el foro de PHP en Foros del Web. Buen dia Esto es lo que necesito hacer: tengo un sistema de administracion de sitios web, lo unico que me falta es subir imagenes a ...
  #1 (permalink)  
Antiguo 24/05/2006, 10:35
Avatar de rockermendez  
Fecha de Ingreso: enero-2006
Ubicación: Guatemala
Mensajes: 123
Antigüedad: 11 años, 10 meses
Puntos: 0
upload de imagenes

Buen dia
Esto es lo que necesito hacer:
tengo un sistema de administracion de sitios web, lo unico que me falta es subir imagenes a mi base de datos para que el usuario sea totalmente independiente, he leido que la forma mas recomendada es crear una carpeta en mi servidor, asi cuando se haga el upload de la imagen se guarde en esta carpeta para no guardarla en mi BD de mysql, y me recomiendan guardar el path de la imagen en mi base de datos para luego recuperarla, creo que tengo el concepto de lo que tengo que hacer pero no se como llevarlo a cabo.

Esto es lo que he logrado hasta ahora:
he logrado subir los archivos a una carpeta (pic) pero mi problema es que no se como guardar el path de mi imagen en la base de datos.

De que forma creo el path para mi base de datos y que pasa si mis usuarios suben dos imagenes con el mismo nombre, porque aqui no hay ningun "id" para hacer la diferencia.


Gracias por su ayuda de antemano
__________________
Solamente quiero aprender, ayudenme!...
  #2 (permalink)  
Antiguo 24/05/2006, 10:53
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 1
Aqui tienes todo lo necesario para hacerlo
http://es2.php.net/manual/es/features.file-upload.php
  #3 (permalink)  
Antiguo 24/05/2006, 12:58
Avatar de rockermendez  
Fecha de Ingreso: enero-2006
Ubicación: Guatemala
Mensajes: 123
Antigüedad: 11 años, 10 meses
Puntos: 0
Gracias por tu ayuda, lei el tutorial pero es lo mismo que ya puedo hacer, subir las imagenes al servidor ya lo puedo hacer.
Lo que ahora necesito es poder guardar el path de esa imagen en mi base de datos y asi poder mostrarla.

Ayudenme...!!!!!!!!! Please..!!!
__________________
Solamente quiero aprender, ayudenme!...
  #4 (permalink)  
Antiguo 24/05/2006, 16:29
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 1
supongo que cuando haces el upload le dices donde guardarla cuando haces
move_uploaded_file ($nombre_archivo, $destino) donde destino es el path donde la almacenas, pues simplemente almacena en un campo de texto de la BBDD $destino.
  #5 (permalink)  
Antiguo 24/05/2006, 17:09
 
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 303
Antigüedad: 12 años, 2 meses
Puntos: 0
yo tambien tuve ese problema aki te paso el codigo:

este formulario de envias datos asi mismo e inserta la ruta de la imagen en una bd mysqly sube la imagen en una carpeta del servidor remoto
------------------------------------------------------------------


----------------
nuevomnot.php
---------------
<?
if($REQUEST_METHOD<>"POST"){
echo "<form action='nuevomnot.php' method='post' name='archivos' enctype='multipart/form-data'>
<table width='520'>
<tr>
<td width='22%'><p>Titulo</p> </td>
<td width='3'>:</td>
<td colspan='2'>
<input name='titulo' type='text' id='titulo' size='60'></td>
</tr>
<tr>
<td>Fuente</td>
<td width='3%'>:</td>
<td colspan='2'><input name='fuente' type='text' id='fuente' size='60'></td>
</tr>
<tr>
<td valign=top>Descripcion</td>
<td valign=top width='3%'>:</td>
<td colspan='2'><textarea name=descripcion cols=40 rows=20></textarea></td>
</tr>

<tr>
<td valign='top'>Foto</td>
<td width='3%' valign='top'>:</td>
<td colspan='2'><input type='file' name='archivo1'></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td width='29%'><input type='submit' name='Submit' value='Insertar'></td>
<td width='46%'><input type='submit' name='Submit2' value='Borrar'></td>
</tr>
</table>
</form>";

}else{

$directorio="fnoticias/";
@copy($archivo1,$directorio.$archivo1_name); //sube la imagen al directorio remoto, en este caso fnoticias

include "conexion.php";
$archivo=$archivo1_name; //almacena la ruta en la variable $archivo

//luego se inserta los datos a la bd

$str_SQL="INSERT INTO noticias (fecha,titulo,descripcion,fuente,foto) VALUES (now(),'$titulo','$descripcion','$fuente','fnotici as/".$archivo."')";
echo "El archivo fué subido con éxito<br><br><a href=nuevomnot.php>Insertar otra noticia</a>";
mysql_query($str_SQL,$conexion);
mysql_close($conexion);
}

?>

--------------------------------
espero ke te sirva suerte.
------------------------
__________________
DESARROLLO Y DISEÑO DE PAGINAS WEB, HOSTING, DOMINIO, TRUJILLO PERU
Diseño web
Trujillo - Perú
  #6 (permalink)  
Antiguo 25/05/2006, 09:38
Avatar de rockermendez  
Fecha de Ingreso: enero-2006
Ubicación: Guatemala
Mensajes: 123
Antigüedad: 11 años, 10 meses
Puntos: 0
Gracias!!!
Voy a probar ahora mismo
__________________
Solamente quiero aprender, ayudenme!...
  #7 (permalink)  
Antiguo 26/05/2006, 12:54
Avatar de rockermendez  
Fecha de Ingreso: enero-2006
Ubicación: Guatemala
Mensajes: 123
Antigüedad: 11 años, 10 meses
Puntos: 0
Realmente estoy muy agradecido por su ayuda pero aun tengo el problema.
Pongo mi codigo para ver ser mas claro:

Con este script cargo la imagen a una carpeta:
Código PHP:
<?
$destino 
'pic' // este es el destino de la imagen, la carpeta pic
$tamano $_FILES 'file' ][ 'size' ]; // Leemos el tamaño del fichero
// Comprovamos el tamaño
if( $tamano 2000000 ){
move_uploaded_file $_FILES 'file' ][ 'tmp_name' ], $destino '/' $_FILES 'file' ][ 'name' ]);
}
else echo 
"El tamaño es superior al permitido" ;
?>
aqui supongo que tengo que crear una variable que guarde el nombre de la imagen que estan subiendo pero en donde coloco dicha variable y como seria la sintaxis.

Estos son los campos del formulario:
Código PHP:
 $insertSQL sprintf("INSERT INTO itdinamica (id_cont, categoria, fecha, img, titulo, parrafo_1) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['id_cont'], "int"),
                       
GetSQLValueString($_POST['categoria'], "text"),
                       
GetSQLValueString($_POST['fecha'], "date"),
                       
GetSQLValueString($_POST['img'], "text"),
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['parrafo_1'], "text")); 
Supongo que aqui tengo que colocar la variable que contiene el nombre de la imagen, pero no se donde!!!.

La imagen si sube perfectamente en el server pero lo que me falta es guardar el path de esta imagen en un campo (img) de mi base de datos, tambien tengo la duda de saber que pasa cuando el usuario sube una imagen o archivo con el mismo nombre.

De nuevo les agradesco las respuestas que puedan darme
__________________
Solamente quiero aprender, ayudenme!...
  #8 (permalink)  
Antiguo 26/05/2006, 18:01
Avatar de rockermendez  
Fecha de Ingreso: enero-2006
Ubicación: Guatemala
Mensajes: 123
Antigüedad: 11 años, 10 meses
Puntos: 0
ayuda!!!!!!!!!!1
__________________
Solamente quiero aprender, ayudenme!...
  #9 (permalink)  
Antiguo 29/05/2006, 08:17
Avatar de rockermendez  
Fecha de Ingreso: enero-2006
Ubicación: Guatemala
Mensajes: 123
Antigüedad: 11 años, 10 meses
Puntos: 0
please. ayudenme!!!!
__________________
Solamente quiero aprender, ayudenme!...
  #10 (permalink)  
Antiguo 29/05/2006, 08:35
Avatar de asinox  
Fecha de Ingreso: enero-2002
Ubicación: Santo Domingo
Mensajes: 2.712
Antigüedad: 15 años, 10 meses
Puntos: 6
creo que esto es:
Código PHP:

//nueva variable ($destino_archivo), esta luego de tu move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' . $_FILES [ 'file' ][ 'name' ]);

//AQUI LA NUEVA VARIABLE

$destino_archivo $destino '/' $_FILES 'file' ][ 'name' ];
 
// y en el script para guardar solo haz esto, cambia GetSQLValueString($_POST['img'], "text"), por GetSQLValueString($destino_archivo, "text"), :
GetSQLValueString($destino_archivo"text"), 
Creo que haciendo esos cambios te puede funcionar
__________________
www.dataautos.com
  #11 (permalink)  
Antiguo 29/05/2006, 08:36
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

Pues mas que guardar el nombre de tu archivo, deberias almacenar la ruta con el nombre del archivo para poder extraer dicha imagen.
Código PHP:
<?
$path 
$destino '/' $_FILES 'file' ][ 'name' ]; 
?>
Saludillos.
  #12 (permalink)  
Antiguo 29/05/2006, 09:02
Avatar de rockermendez  
Fecha de Ingreso: enero-2006
Ubicación: Guatemala
Mensajes: 123
Antigüedad: 11 años, 10 meses
Puntos: 0
ahorita lo pruebo, se los agradesco mucho
Les cuento como me va
__________________
Solamente quiero aprender, ayudenme!...
  #13 (permalink)  
Antiguo 30/05/2006, 12:14
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
te repondi pero tuve porblemas con el login perdi too..! lo hare denuevo
  #14 (permalink)  
Antiguo 30/05/2006, 12:49
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
Respuesta

asi es... trabajr con el URL nada mas es mas conveniente en el utilizacion del recurso base dato... tienes k crear una carpeta virtual donde kedaran los documentos k subas...
primero creamos el form donde subiras tu archivo... y lo enviamos a el archivo php llamado archivo_ag.php
-----------------------------------------------------------------------
<form method="POST" enctype="multipart/form-data" name="form" action="archivo_ag.php" >

ID:
<input type="text" name="id">

Adjunte documento:
<input type="file" name="archivo" size="20" >

<input type="submit" value="Enviar">
<input type="button" class="button" name="cmdCancelar" value="Cancelar" onclick="javascript:window.close();">
<form>

---------------------------------------------------------------------

generamos el archivo "archivo_ag.php" aki procesaremos el formulario completo (solo pondre los campos que utilizaremos)
ahi va.....
---------------------------------------------------------------------
//descatamos los datos del form//

$id=$_POST["id"];


<?
// Configuración //
///////////////////
// $extensiones=array("1ªext","2ªext","....");
// Aqui debes poner las extensiones que NO admitas
// por ejemplo si no quieres admitir .html , .exe ni .gif :
// $extensiones=array("html","exe","gif");
///////////////////////////////////////
$extensiones=array("html","exe","php","","1","2"," 3","4","5","6","7","8","9","0","config","dll","inc ");
/////////////////
// $path="/ruta/ta/ta";
// Si el server rula bajo LinuX toda la ruta completa /var/etc/..
// Si rulas bajo WindoWs C:/midirectorioroot/tal..
// Nota: Sin el último / ej: C:/miweb NO C:/miweb/
////////////////
$path="C:/Inetpub\wwwroot\sec2\oficios";
$nombre=$HTTP_POST_FILES['archivo']['name'];
$tamanio=$HTTP_POST_FILES['archivo']['size'];
$tipo=$HTTP_POST_FILES['archivo']['type'];
$var = explode(".","$nombre");
$num = count($extensiones);
$valor = $num-1;

for($i=0; $i<=$valor; $i++) {
if($extensiones[$i] == $var[1]) {
echo "Archivo no admitido <br>
input type='button' class='button' name='cmdsalir' value='Salir' onclick='javascript:window.close();'> ";
exit;
}
}

$nombre_archivo = $_POST["num_oficio"].substr($nombre, strlen($nombre) - 4, 4);

if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name']))
{
copy($HTTP_POST_FILES['archivo']['tmp_name'], "$path/$nombre_archivo");
echo "Datos ingresados correctamente!";
}
else
{
echo "Error al subir el archivo";
}
?>
******
<CENTER>
<input type="button" name="cmdaceptar" value="Aceptar" class="button" onclick="javascript:window.close();">
</CENTER>

------------------------------------------------------------------------

veras, esta linea

$nombre_archivo = $_POST["id"].substr($nombre, strlen($nombre) - 4, 4);

guarda en la variable que debes crear llamada $nombre_archivo, el nombre de tu "id" del formulario conkatenada con la enxtension del documento... nombre. extension
ej: luis.jpg

la idea es poder hacerlo identificable asociado con un documento en particular... ej: los datos de alguien y esta es su foto
por lo cual es fundamental mantener el archivo ligado a la id del documento para su futura visualizacion. ademas nos aseguramos k no existan repetidos.. ya k en la base datos no lo permitira..


luego guardamos el campo en el base datos
ej:

$query = "INSERT INTO tutabla (id,nombre_archivo) VALUES ('".$id."','".$nombre_archivo."')";

y listo ...!!

ahora veremos si kisieras hacer una consulta en la base datos y listar el resultado con el fin de poder descargar el archivo k esta en la carpeta virtual... :D!

------------------------------------------------------------------------
creamos la consulta a la base datos ... creo eso ya lo sabes, luego imprimes el resultado y listo... pero ojo la impresion del campo nombre_archivo es asi...

el orden de la direccion del "a href" tiene el siguiente orden...

"servidor/carpeta_virtual/nombre_archivo"

------------------------------------------------------------------------
<a href="<?php print(localhost/archivos/".$row["nombre_archivo"]);?>" target="_blank"><?php print($row["nombre_archivo"]);?>
------------------------------------------------------------------------

yo manejo el resultado de mi consulta en la variable $row
... solo por si no lo comprendias....

bueno espero sirva... no garantizo que funcione... ya k yo lo implemento pero con mucho mas codigo... esto es solo aproximacion real a lo k deberia ser... pero yo creo k funciona.... suerte ... espero tu respuesta...
atte
sEIK! -Chile-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:34.