ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: Don_Gusanito en Octubre 03, 2006, 13:28:59

Título: (COM) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Don_Gusanito en Octubre 03, 2006, 13:28:59
El tema es el siguiente, tengo el siguiente formulario:
<form id="form_abm" name="noticias" method="post" action="addNoticia.php">
  <table width="544" border="0" align="center">
    <tr>
      <td width="63"><h4>Titulo</h4></td>
      <td width="471">
        <input name="titulo" type="text" id="titulo" size="70" maxlength="150" />
      </td>
    </tr>
    <tr>
      <td><h4>Copete</h4></td>
      <td><textarea name="copete" cols="70" rows="5" id="copete"></textarea></td>
    </tr>
    <tr>
      <td><h4>Desarrollo</h4></td>
      <td>
        <textarea name="desarrollo" cols="70" rows="10" id="desarrollo"></textarea>
     </td>
    </tr>
    <tr>
      <td><h4>Imagen</h4></td>
      <td><input name="imagen" type="text" id="imagen" size="50" /></td>
    </tr>
    <tr>
      <td><h4>Fuente</h4></td>
      <td><input name="fuente" type="text" id="fuente" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>
        <input type="submit" name="Submit" value="Enviar" />
        <label>
        <input name="Reset" type="reset" id="Reset" value="Borrar todo" />
        </label>      </td>
    </tr>
  </table>
</form>


Lo que necesito hacer es, selecionar una imagen ubicada en mi disco, subirla a una carpeta del host y guardar la direccion de la imagen en la DB.
En el campo imagen me faltaria un boton al lado para buscar la imagen en mi pc supongo tambien.

Muchas Gracias a quien pueda ayudarme. Saludos
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: snoop en Octubre 05, 2006, 11:50:21
Para subir un archivo al servidor podes fijarte este articulo (http://www.elguruprogramador.com.ar/ZONAS/ver.asp?id=106), como veras es necesario que el input del archivo sea del tipo type y no text.
Calculo que ese sera tu problema.

Saludos
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Camello_AR en Octubre 05, 2006, 21:07:22
en realidad la cuestión no es tanto en el form (donde tenes que poner como dijo snoop file en el tipe del image) y ademas en form tenes que poner tipo enctype="multipart/form-data"; sino que es la segunda parte (pagina 2) donde procesas el archivo que tenes la parte mas compleja

Igual el tuto que dejo snop esta bueno
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Don_Gusanito en Octubre 06, 2006, 07:39:28
Olvidense de ese form, lo que necesito hacer es, selecionar una imagen ubicada en mi disco, subirla a una carpeta del host y guardar la direccion de la imagen en la DB.

Muchas Gracias a quien pueda ayudarme. Saludos
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Predicador en Octubre 06, 2006, 07:52:26
Ya habia hablado sobre esot hace un tiempo, quizas sea mas avanzado de lo que vos necesitas, pero miralo y plantea las dudas aca.
El post lo podes ver aca: http://www.argentop2p.net/index.php?topic=6489.0
Baii

PS: en la parte PHP del codigo, algunos caracteres fueron transformados por SMF, por ejemplo, aparece como clearstatcache&#40;&#41;; pero deberia ser clearstatcache(); eso deberias arreglarlo a mano.
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Don_Gusanito en Octubre 06, 2006, 10:43:09
Gracias predicador.
Ahora despues de haber leido el codigo me queda una duda.
Como hago para que una vez subido archivo copiar la ruta y metarla en un campo de mi DB?

Gracias Nuevamente
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: snoop en Octubre 06, 2006, 10:50:59
Cita de: Don_Gusanito en Octubre 06, 2006, 10:43:09
Gracias predicador.
Ahora despues de haber leido el codigo me queda una duda.
Como hago para que una vez subido archivo copiar la ruta y metarla en un campo de mi DB?

Gracias Nuevamente
La ruta la deberias saber, dado que tendrias que saber cual es el directorio de uplad de tu servidor. Luego agregas el nombre del archivo que le asignaste y agregas un registro con esa info.
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: keegan en Octubre 07, 2006, 01:38:31
www.forosdelweb.com ahi esta tu solcuion en el foro de PHP hay miles de temas como el tuyo
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Camello_AR en Octubre 07, 2006, 02:15:17
para meter la ruta necesitas hacer un insert


(ya iniciaste la conexion con el mysql y tenes un identificador $link)
$query = "INSERT  INTO [i]tabla[/i] ([i]archivo,descripcion[/i]) VALUES ($rutaupload, $descripcion)";
$insertar = mysql_query($link,$query);
(ya se inserto)


En el ejemplo $rutaupload es el lugar donde se guardo el archivo y $descripcion es un campo que podes poner para saber que  es (es al efecto del ejemplo, podes cambiar eso por los datos que tiene tu DB

PD: Cualquier cosa mirate http://ar2.php.net/manual/es/ref.mysql.php y www.mysql.org sección documentación, para ver el tema de la base de datos y las funciones
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Predicador en Octubre 07, 2006, 08:31:07
Perdon por la respuesta tardia, pero si, tal cual dice Camello_AR, y la ruta del archivo subido esta en $dest.
Por ende y haciendo una version resumida, tenemos que el formulario donde se dice que archivo subir seria de la forma:
<form name="datos" method="post" enctype="multipart/form-data" action="subir.php">
  file:<input type="file" name="fileupload" class="textfield" size="50">
  <input type="submit" value="upload" class="button">
  <input type="reset" value="clear" class="button">
</form>

Y el archivo subir.php que es llamado desde ese formulario seria de la forma:
     #
     # Subir.php archivo
     #

     $source=$_FILES[fileupload][tmp_name];
     $fileupload_name=$_FILES[fileupload][name];
     $weight=$_FILES[fileupload][size];

     $dest ="upload_dir/".$fileupload_name;

     if(file_exists($dest)) {
         echo "Archivo ya existe.";
         exit();
     }
     if (copy($source,$dest)) {
         echo"Subido sin problemas.";
        # --- El aporte de Camello_AR
# (ya iniciaste la conexion con el mysql y tenes un identificador $link)
$descripcion = "Archivo subido por una persona";
$query = "INSERT  INTO [i]tabla[/i] ([i]archivo,descripcion[/i]) VALUES ($dest, $descripcion)";
$insertar = mysql_query($link,$query);
# --- fin aporte de Camello_AR
     }else{
         echo "No se pudo subir.";
     }

Esto es lo mismo que esta en el otro post, solo que con cantidad de cosas removidas para facilitar la compresion. Es impostante que ruta se le asigna a $dest ya que el script debe tener permisos de escritura en ese directorio.
Luego de hacer el upload (que en fin es el copy()) se procede a insertar la ruta destino el SQL (ysi, flatan las instrucciones para conectar al SQL, pero por algun otro post estan).
Baii.

IMPORTANTE: No uses este script asi como esta, necesita controles de seguridad!!!
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Camello_AR en Octubre 07, 2006, 10:05:42
PD: Ahora estaba viendo como quedo mi code y el de predi y en la linea de INSERT los [ i] [/ ] no van, queria poner cursiva para destacar un par de datos pero me olvido que el tag codigo no acepta BBCode

Una de las formas de filtrar lo que subis es a traves del identificador del tipo mime del archivo, que tanto la carpeta de origen como de destino sean no ejecutable (para que no te suban un exploit), que verifica alguna identidad, que verifique referentes (para evitar que la llamada al archivo "subir.php" sea desde cualquier otro form que no sea el tuyo). Es importante lo de controlar el tipo mime, dado que si te subo un php asi


#visor.php
<?
show_source($HTTP_GET_VARS[file]);
?>


Y lo llamo desde el navegador: tusitio/imagenes/visor.php?file=subir.php me muestra el contenido de ese archivo (y si tenes claves de base de datos y otras cosas en algun php es un riesgo muy muy grande

Saludos
Título: Re: (PED) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Don_Gusanito en Octubre 13, 2006, 11:03:54
Muchisimas gracias, todo fue de gran utilidad
Título: Re: (COM) Upload Imagenes con Formulario - PHP & MySQL
Publicado por: Camello_AR en Octubre 13, 2006, 21:05:21
Por nada gusanito