Foros del Web » Programando para Internet » PHP »

subir imagen al servidor a una carpeta especifica y almacenar el nombre en BD

Estas en el tema de subir imagen al servidor a una carpeta especifica y almacenar el nombre en BD en el foro de PHP en Foros del Web. Alguna alma caritativa podria darme una manito o ejemplo sencillo que yo pueda entender. Lo que deseo es subir una imagen *.jpg, *.bmp, *.gif, *.png ...
  #1 (permalink)  
Antiguo 14/08/2007, 03:16
Avatar de ronnyalfonzo  
Fecha de Ingreso: julio-2007
Ubicación: Maracaibo
Mensajes: 76
Antigüedad: 16 años, 8 meses
Puntos: 1
subir imagen al servidor a una carpeta especifica y almacenar el nombre en BD

Alguna alma caritativa podria darme una manito o ejemplo sencillo que yo pueda entender.

Lo que deseo es subir una imagen *.jpg, *.bmp, *.gif, *.png a una carpeta expecifica digamos /imagenesupload

y nesesito que el formulario me valide o verifique varias cosas

1. que si el archivo a subir no posee algunas de las extenciones antes mencionadas me de error archivo equivocado

2. que el formulario me capture el nombre del archivo a subir y al mismo tiempo
me almacene el nombre del archivo en un campo llamamoslo campoX

3. que el formulario me avise si estoy tratando de subir algun archivo duplicado o eviatar que me remplase archivos existentes con el mismo nombre

4. el otro problema que tengo es que al tratar de subir los archivos mayores de 2 megas no me suben

tengo 2 dias dandole vuelta a esto y la verda soy novato y estado leyendo pero hay algunos script que no los entiendo.

por los momento he proba los siguientes script

el Primero

tengo un formulario.html
<form action="upload3.php" method="post" enctype="multipart/form-data">
<input name="archivo" type="file" size="35" />
<input name="enviar" type="submit" value="Upload File" />
<input name="action" type="hidden" value="upload" />
</form>

llamo con el formulario un archivo PHP llamado upload.php

<?
$status = "";
if ($_POST["action"] == "upload") {
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);

if ($archivo != "") {
$destino = "imagenesupload/".$prefijo."_".$archivo;
if (copy($_FILES['archivo']['tmp_name'],$destino)) {
$status = "Archivo subido: <b>".$archivo."</b>";
} else {
$status = "Error al subir el archivo";
}
} else {
$status = "Error al subir archivo";
}
}
?>

con este script he podido subir los archivos pero la parte de enviar el nombre de el archivo a la base de datos no he podido como tampoco validar los erroes de archivos con extensiones incorrectas ni tampoco subir archivos mayores de 2megas.


El segundo Script que entindo mucho menos que el primero espero me expliquen diferencias entre ambos y cual es el mas indicado para usar.

<?php
if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo
if(move_uploaded_file($_FILES['fichero']['tmp_name'], $_FILES['fichero']['name'])) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";
}
}


}
?>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
Archivo: <input name="fichero" type="file">
<input name="submit" type="submit" value="Upload!">
</form>

Se que estoy pidiendo demasiado y que no acostumbran a dar los codigos completos pero solo quiero algo saque de estos 2 dias amargos que he pasado con este solo problema en particular.



Perdonen y mil Gracias a todos
  #2 (permalink)  
Antiguo 14/08/2007, 05:20
Avatar de zaida  
Fecha de Ingreso: noviembre-2006
Ubicación: Madrid (España)
Mensajes: 266
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: subir imagen al servidor a una carpeta especifica y almacenar el nombre en BD

Hola ronnyalfonzo:
Yo valido el tipo de archivo con javascript, por si te soluciona algo:

Código:
function LimitAttach(tField,iType) { 
file=tField.value; 
if (iType==1) { 
extArray = new Array(".gif",".jpg",".png"); 
} 
if (iType==2) { 
extArray = new Array(".swf"); 
} 
if (iType==3) { 
extArray = new Array(".exe",".sit",".zip",".tar",".swf",".mov",".hqx",".ra",".wmf",".mp3",".qt",".med",".et"); 
} 
if (iType==4) { 
extArray = new Array(".mov",".ra",".wmf",".mp3",".qt",".med",".et",".wav"); 
} 
if (iType==5) { 
extArray = new Array(".html",".htm",".shtml"); 
} 
if (iType==6) { 
extArray = new Array(".doc",".xls",".ppt"); 
} 
allowSubmit = false; 
if (!file) return; 
while (file.indexOf("\\") != -1) file = file.slice(file.indexOf("\\") + 1); 
ext = file.slice(file.indexOf(".")).toLowerCase(); 
for (var i = 0; i < extArray.length; i++) { 
if (extArray[i] == ext) { 
allowSubmit = true; 
break; 
} 
}
A la hora de limitar el tamaño me funciona localmente pero en el servidor no y descubrí que era por el $_FILES por lo que tuve que poner $HTTP_POST_FILES

Espero que te sirva de algo
Saludos
__________________
-- Cuando sientas miedo y no tengas un hombro dónde apoyarte, no te hundas en la soledad, pues si lo haces fracasarás --
  #3 (permalink)  
Antiguo 14/08/2007, 05:26
Avatar de zaida  
Fecha de Ingreso: noviembre-2006
Ubicación: Madrid (España)
Mensajes: 266
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: subir imagen al servidor a una carpeta especifica y almacenar el nombre en BD

Aquí tienes un código de cómo subir imágenes a la bd copiando la imagen en una carpeta y vusualizándola con thumbnails, espero que te sirva:

subir_imagen_con_ruta.php

Código HTML:
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="subir_imagenes_con_ruta2.php" method="post" enctype="multipart/form-data"> 
    Archivo: <input name="fichero" type="file"> 
    <input name="submit" type="submit" value="Upload!">  
</form> 
</body>
</html> 

subir_imagen_con_ruta2.php

Código PHP:
<?php
$ruta
="./imagenes/";//ruta carpeta donde queremos copiar las imágenes
$uploadfile_temporal=$_FILES['fichero']['tmp_name'];
$uploadfile_nombre=$ruta.$_FILES['fichero']['name'];

if (
is_uploaded_file($uploadfile_temporal))
{
    
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
}
else
{
echo 
"error";
}
$directorio=opendir("imagenes/");
while(
$ficheros=readdir($directorio))
{
    
$url="imagenes/".$ficheros;
    echo 
"<img src=".$url.">";
}
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>
Saludos
__________________
-- Cuando sientas miedo y no tengas un hombro dónde apoyarte, no te hundas en la soledad, pues si lo haces fracasarás --
  #4 (permalink)  
Antiguo 26/08/2007, 13:39
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 19 años, 8 meses
Puntos: 2
Re: subir imagen al servidor a una carpeta especifica y almacenar el nombre en BD

aqui esta perfectamente explicado
http://www.forosdelweb.com/f18/subir-imagenes-noticias-448466/
__________________
paty :adios:
  #5 (permalink)  
Antiguo 24/11/2015, 11:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 3
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: subir imagen al servidor a una carpeta especifica y almacenar el nombre en

Buenas, estoy intentando hacer un gestor de contenidos en el cual tengo que subir una imagen a BBDD y guardar dicha imagen en una carpeta determinada, fuera de las carpetas del gestor, pero no consigo guardar la imagen en la carpeta correspondiente, me guarda bien la imagen en la BBDD pero no se me guarda la imagen en la carpeta.

Alguien me podría ayudar, por favor??

Os dejo este trozo del código que es el que intento hacer para que guarde lla imagen en la carpeta correspondiente. Muchas gracias

$carpeta = "../../../img/actualidad/fotos/";
opendir($carpeta);
$carpetaDestino = $carpeta.$_FILES['imagen']['name'];
copy($_FILES['imagen']['tmp_name'], $carpetaDestino);
$ruta=mysql_real_escape_string("fotos/".$_FILES['imagen']['name']);
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:01.