Foros del Web » Programando para Internet » PHP »

Problema al subir una imagen a un directorio.

Estas en el tema de Problema al subir una imagen a un directorio. en el foro de PHP en Foros del Web. Hola, estoy haciendo una página la cual tiene álbumes de fotos y por lo tanto, la función de subir fotos desde el ordenador del usuario ...
  #1 (permalink)  
Antiguo 01/08/2011, 14:48
 
Fecha de Ingreso: enero-2011
Ubicación: Internet
Mensajes: 10
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Problema al subir una imagen a un directorio.

Hola, estoy haciendo una página la cual tiene álbumes de fotos y por lo tanto, la función de subir fotos desde el ordenador del usuario de la página a una carpeta dentro del directorio de la web.

Uso un código PHP el cual funciona perfectamente si lo ejecuto en mi servidor, pero en cambio, al probarlo en un servidor gratuito (byethost, 000webhost), el comando de PHP no es capaz de mover la imagen al directorio donde deberían ir todas las imágenes subidas por los usuarios.

El código es este:
Código PHP:
<?php
if(!empty($_POST['phtsubmit'])){
$phtdescripcion $_POST['phtdescripcion'];
$phtalbum $_POST['phtalbum'];
$phtautor $_COOKIE["nick"];
$phtfecha traducir(date('l j \of F \of Y'));
$phthora2 time()+21600
$phthora date("H:i:s",$phthora2);
$phtextension $_FILES['phtfile']['type'];
if (
$phtextension == "image/gif" || $phtextension == "image/jpeg" || $phtextension == "image/png") {
if (!empty(
$phtalbum) && $_FILES['phtfile']){ 
if (
is_uploaded_file($_FILES['phtfile']['tmp_name'])){
// Guardo la imagen en una variable
$imagen $_FILES['phtfile']['name'];
// Obtengo el nombre y la extensión de la imagen
$imagen1 explode(".",$imagen);
// Guardo la imagen en otra variable con un nombre aleatorio de números y su extensión
$imagen2 rand(0,9).rand(100,9999).rand(100,9999).".".$imagen1[1];
$imagen3 explode("."$imagen2);
// Guardamos la imagen en la carpeta imagenes con su respectivo nombre
$movepht move_uploaded_file($_FILES['phtfile']['tmp_name'], "imagenes/".$imagen3[0].".".$imagen3[1]);
if(
$movepht == false){
echo 
"Ha fallado";
}else{
header("Location: admin.php?alb=$phtalbum");
// Creo una variable con la url de la foto
$phturl "imagenes/".$imagen3[0].".".$imagen3[1];
// Le doy permisos a la foto por si hay que editarla/eliminarla.
chmod($phturl,0777);
// La insertamos en la base de datos para mostrarla más tarde
$pht_insert mysql_query("insert into fotos(nombre_foto, url_foto, descripcion_foto, album_ID, pht_fecha, pht_autor, pht_hora)values('$imagen2', '$phturl', '$phtdescripcion', '$phtalbum', '$phtfecha', '$phtautor', '$phthora')"$conectar)or die(mysql_error());
}
}else{
echo 
"<p class=\"conboxtext\">La foto no se ha subido por un error desconocido. <a href=\"javascript:history.back(1)\">Haz click aquí para volver.</a></p>";
}
}else{
echo 
"<p class=\"conboxtext\">Rellena los campos obligatorios(Marcados con un *). <a href=\"javascript:history.back(1)\">Haz click aquí para volver.</a></p>";
}
}else{
// Si la imagen no tiene extensión jpeg, png o gif mostrará un mensaje de error.
echo "<p class=\"conboxtext\">La imagen debe estar en formato *.jpeg, *.gif o *.png. <a href=\"javascript:history.back(1)\">Haz click aquí para volver.</a></p>";
}
}else{
?>
Lo que se diría que es la parte que falla, es esta:
Código PHP:
// Guardamos la imagen en la carpeta imagenes con su respectivo nombre
$movepht move_uploaded_file($_FILES['phtfile']['tmp_name'], "imagenes/".$imagen3[0].".".$imagen3[1]);
if(
$movepht == false){
echo 
"Ha fallado";
}else{
header("Location: admin.php?alb=$phtalbum");
// Creo una variable con la url de la foto
$phturl "imagenes/".$imagen3[0].".".$imagen3[1];
// Le doy permisos a la foto por si hay que editarla/eliminarla.
chmod($phturl,0777);
// La insertamos en la base de datos para mostrarla más tarde
$pht_insert mysql_query("insert into fotos(nombre_foto, url_foto, descripcion_foto, album_ID, pht_fecha, pht_autor, pht_hora)values('$imagen2', '$phturl', '$phtdescripcion', '$phtalbum', '$phtfecha', '$phtautor', '$phthora')"$conectar)or die(mysql_error());

Bueno, los errores que me da el servidor al intentar subir la foto son los siguientes:
Código:
Warning: move_uploaded_file(imagenes/464004138.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/a5455245/public_html/nwpht.php on line 21

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpZI6bGV' to 'imagenes/464004138.jpg' in /home/a5455245/public_html/nwpht.php on line 21
La línea 21 del código (Pongo el comentario para que os sea más facil ubicaros):
Código:
// Guardamos la imagen en la carpeta imagenes con su respectivo nombre
$movepht = move_uploaded_file($_FILES['phtfile']['tmp_name'], "imagenes/".$imagen3[0].".".$imagen3[1]);
Y eso es todo, espero que me podáis ayudar, yo seguiré mirando a ver si consigo solucionarlo, porque ya he probado de mil formas y nada.
  #2 (permalink)  
Antiguo 01/08/2011, 16:28
Avatar de lordglazoon  
Fecha de Ingreso: julio-2011
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Problema al subir una imagen a un directorio.

lo puede pasar es que no encuentra la ruta de la carpeta en el servidor, prueba poniendo ruta especifica no relativa y fíjate que muchas veces los servidores gratuitos tienen restricciones para subir archivos (peso, extencion, etc.)

Etiquetas: html, imagenes, mysql, sql, variables, usuarios
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 00:28.