Subir imagen en php no funciona

  • Autor Autor gallurt
  • Fecha de inicio Fecha de inicio
G

gallurt

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola gente;
Tengo un codigo en php que no me funciona y para mi es perfecto ya que es lo que necesito. Pero no logro hacer que suba la imagen al servidor

Consta de dos archivos uno que es el del formulario:

PHP:
<SCRIPT LANGUAGE="JavaScript">
function popUp(URL) {
      day = new Date();
      id = day.getTime();
      eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=1,statusbar=1,menubar=0,resizable=0,width=500,height=500,left = 710,top = 290');");
}
</script>
Imagen: <input type="text" id="img"/> 
<a href="javascript:popUp('/subir_imagen.php');">[ Subir imagen ]</a>


Y otro en php subir_imagen.php

PHP:
<?php
      if(!isset($_POST['enviar'])){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Subir imagen</title>
</head>
 
<body>
<form method='post' action='?subida' enctype='multipart/form-data'>
<table width="100%" border="0" cellspacing="10">
  <tr> 
    <td align="center"><h1 style="text-align:center;">Subir imagen</h1></td>
  </tr>
<tr>
  <td align="center">Selecciona la imagen<br /><input name="img1" type="file" /></td>
  </tr>
 
  <tr>
    <td align="center">&nbsp;</td>
  </tr>
  <tr>
    <td align="center" ><input name='enviar' type='submit' value='Subir' />
</td>
    </tr>
</table>
</form>
<?php
   }else{
      //SUBIMOS LA IMAGEN
      if (is_uploaded_file($_FILES['img1']['tmp_name'])){
      //recojo la imagen
      $imagen = $_FILES['img1']['name'];
      //Obtengo el nombre de la imagen y la extensión de la foto
      $imagen1 = explode(".",$imagen);
      if(($imagen1[1] == "jpg") || ($imagen1[1] == "png")){
              //Genero un nombre aleatorio con números y se asigno la extensión obtenida anteriormente
              $imagen2 = rand(0,9).rand(100,9999).rand(100,9999).".".$imagen1[1];
            //Coloco la imagen en la carpeta correspondiente con el nuevo nombre
            move_uploaded_file($_FILES['img1']['tmp_name'], "http://www.conocimientoprohibido.es/img_subidas/".$imagen2);
            //Asigno a la foto permisos
            $ruta="http://www.conocimientoprohibido.es/img_subidas/".$imagen2;
            chmod($ruta,0777);
                //MANDAMOS LA URL AL FORMULARIO
            echo "<script>
                  window.opener.document.getElementById('img').value = 'http://www.conocimientoprohibido.es/img_subidas/".$imagen2."';
                    alert('Imagen subida correctamente');
                  window.close();
                  </script>";
            }else{
                  echo "<br><br><p align='center'><span style='color:red;font-size:28px;'>Solo se permiten fotograf&iacute;as .jpg y .png</span></p>";
                  echo "<p align='center'><a href='subir_imagen.php'><span style='font-size:28px;'>Volver atr&aacute;s</span></a></p>";
            }
      }                 
}
?></center>
</body>
</html>


Gracias por la respuesta
 
pero eso es para subir imagenes remotas (de otros servidores), no?
 
se supone que es para subir imagenes de tu disco duro al servidor

mira el ejemplo donde lo estoy intentando

subir imagen
 
Probe tu codigo en localhost y funciona bien... ¿Comprobaste en tu servidor que realmente se subio la imagen? puede que worpress de alguna forma no muestre la imagen por sus url amigables, cambia la ruta al directorio wp-content/uploads y me cuentas.
 
el problema es que no salta el pop up, no?
 
Probe tu codigo en localhost y funciona bien... ¿Comprobaste en tu servidor que realmente se subio la imagen? puede que worpress de alguna forma no muestre la imagen por sus url amigables, cambia la ruta al directorio wp-content/uploads y me cuentas.

he cambiado las rutas a wp-content/uploads y nada mirando con un programa ftp en el directorio no hay imagen

el problema es que no salta el pop up, no?

el problema es que no sube la imagen al directorio del servidor cuando miro con un programa ftp en el directorio no hay imagen
 
Una cosa que se me paso comentarte, no uses tu dominio en la direccion de subida, ahi se refiere a la direccion del directorio en tu host no de tu url quedaria algo como:
PHP:
move_uploaded_file($_FILES['img1']['tmp_name'], "/img_subidas/".$imagen2);
son 3 lineas donde tienes que quitar el dominio :encouragement:
 
Una cosa que se me paso comentarte, no uses tu dominio en la direccion de subida, ahi se refiere a la direccion del directorio en tu host no de tu url quedaria algo como:
PHP:
move_uploaded_file($_FILES['img1']['tmp_name'], "/img_subidas/".$imagen2);
son 3 lineas donde tienes que quitar el dominio :encouragement:

ya lo he probado y no me sube la imagen
 
El problema está en la ruta, no puedes usar está ruta:

move_uploaded_file($_FILES['img1']['tmp_name'], "http://www.conocimientoprohibido.es/img_subidas/".$imagen2);

Tienes o bien que usar algo así (En una web sin wordpress funcionaria):
move_uploaded_file($_FILES['img1']['tmp_name'], "/img_subidas/".$imagen2);

O bien poner la ruta absoluta, que será
/home/sites/example.com/html/uploads/ Es un ejemplo, la tuya será diferente,

Prueba a poner un echo dirname(__FILE__), para ver donde te encuentras y la estructura de tu servidor

PHP:
echo dirname(__FILE__);

o bien:

PHP:
echo $_SERVER['DOCUMENT_ROOT'];

Ya a partir de la estructura que te muestre pones el directorio en el que quieres que se suba. También asegurate de que tiene permisos, pongo muy en duda que se puedan dar permisos a una url como pones, todo debería ser rutas relativas o absolutas .

Saludos
 
El problema está en la ruta, no puedes usar está ruta:

move_uploaded_file($_FILES['img1']['tmp_name'], "http://www.conocimientoprohibido.es/img_subidas/".$imagen2);

Tienes o bien que usar algo así (En una web sin wordpress funcionaria):
move_uploaded_file($_FILES['img1']['tmp_name'], "/img_subidas/".$imagen2);

O bien poner la ruta absoluta, que será
/home/sites/example.com/html/uploads/ Es un ejemplo, la tuya será diferente,

Prueba a poner un echo dirname(__FILE__), para ver donde te encuentras y la estructura de tu servidor

PHP:
echo dirname(__FILE__);

o bien:

PHP:
echo $_SERVER['DOCUMENT_ROOT'];

Ya a partir de la estructura que te muestre pones el directorio en el que quieres que se suba. También asegurate de que tiene permisos, pongo muy en duda que se puedan dar permisos a una url como pones, todo debería ser rutas relativas o absolutas .

Saludos

gracias ya lo pude solucionar con la ruta
PHP:
echo dirname(__FILE__);
 
Atrás
Arriba