Foros del Web » Programando para Internet » PHP »

subir imagen al servidor

Estas en el tema de subir imagen al servidor en el foro de PHP en Foros del Web. Estoy haciendo un carrito de la compra, y cada producto debe tener una imagen asociada. Ahora voy a ponerme con la parte de gestión interna, ...
  #1 (permalink)  
Antiguo 17/08/2004, 06:54
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta subir imagen al servidor

Estoy haciendo un carrito de la compra, y cada producto debe tener una imagen asociada.
Ahora voy a ponerme con la parte de gestión interna, en la que podré añadir, modificar y eliminar productos de la base de datos (está en mysql).
El problema es cómo subir las imagenes al sevidor.
Tengo un directorio en el servidor, llamado FOTOSBD, donde tengo todas las imágenes correspondientes a los productos. En la base de datos no tengo ningun dato que haga referencia a la imagen, lo que hago es almacenar las imágenes con el nombre correspondiente al codigo del producto, y quiero obligar a que todas las imagenes sean JPG, es decir, todas las imagenes se llamarán CODOGO_PRODUCTO.JPG.
De este modo, para mostrar la imagen asociada a un producto solo tengo que buscar en el directorio si existe una imagen cuyo nombre se corresponda con el codigo del producto, con la extension.jpg. Si no existe una imagen con ese nombre, se muestra una imagen por defecto, en la que hay un texto que dice "IMAGEN NO DISPONIBLE".

A la hora de añadir un producto nuevo o modificar uno existente, quiero mostrar la imagen asociada (si no existe mostrará la de por defecto) en la página de inserción de datos, en la que tengo el resto de inputs y combos para especificar los datos del producto (descripcion, cantidad, etc).
Junto a la imagen quiero que aparezca un input de tipo text, en el que pueda poner la ruta de la imagen que quiero asociar al producto, y un botón examinar, que me obligue a buscar solamente imagenes *.jpg , a través del cual pueda obtener tb la ruta de la imagen (esto no se como hacerlo, que me aparezca el dialogo para seleccionar la imagen obligando a que sea *.jpg, no se si se hace en php o javasccript).
Al darle a un botón ACTUALIZAR IMAGEN ya sé como hacer que se cambie la imagen sin tener que actualizar la pagina, mediante javascript, no se si hay alguna funcion javascript que permita hacelo
Pero luego no sé como hacer que se suba la imagen al servidor,con el nombre CODIGO_PRODUCTO.JPG, al directorio FOTOSBD, cuando pulse sobre el botón GUARDAR PRODUCTO

¿Algunas sugerencia?

Muchas gracias
  #2 (permalink)  
Antiguo 17/08/2004, 06:57
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 21 años, 2 meses
Puntos: 0
En lo de ACTUALIZAR IMAGEN quise decir que no se si hay alguna funcion php que permita cambiar la imagen, en javasript si que se
  #3 (permalink)  
Antiguo 17/08/2004, 07:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Vamos por partes ...

El tema de leer un archivo de un directorio y .. detectar si existe o no (sea una imagen o cualquier otra cosa) .. puedes usar la función:

Código PHP:
<?php 
$imagen 
"productos/".$codigo_producto.".jpg"// no sé donde obtendras el código del producto .. pero ese será su nombre.
$imagen_por_defecto "imagenes/no_hay.jpg"

if (
file_exists($imagen)) { 
   echo 
"<img src=\"".$imagen."\">"
} else { 
   echo 
"<img src=\"".$imagen_por_defecto."\">"

?>
Para lo demás .. supongo que usaras una Base de datos? para almacenar la información del producto? ...

Si es así .. y piensas asociar a la imagen del producto con el nombre de ese "código" .. Crea tu tabla en tu BD .. con tus campos de nombre, código, descripción, precio .. etc ...

A la hora de crear un producto .. haz el UPLOAD del archivo desde tu PC local con las funciones y técnicas de:

http://www.php.net/manual/en/features.file-upload.php

.. ya que el nombre de la imagen ha de ser igual al del campo "código" que usaras en tu formulario de registro/actualización de ese producto .. cuando sube el archivo y estés en el proceso de mover el archivo a su destino definitivo (cuando uses: move_uploaded_file()) ahí le "cambias" el nombre del archivo original (el que usastes en tu "upload" y que tenías en tu PC local) por ese campo "código" que le diste nombre en tu formulario y lo dejas en tus "productos/" directorio que es donde debe quedar ...

Sería algo tipo:

Código PHP:
<form action="procesar.php" method="post" enctype="multipart/form-data">
<
input type="text" name="codigo">
etc .. campos .....
<
input type="file" name="imagen">
</
form
procesar.php
Código PHP:
<?
if (move_uploaded_file($_FILES['imagen']['tmp_name'],"productos/".$_POST['codigo'].".jpg")){
   echo 
"Subió el archivo OK";
   
// y aquí creas tu registro en tu BD (INSERT/UPDATE .. )
} else {
   echo 
"algo falló";
}
?>
(ojo que toda imagen sea jpg.. sinó habrá que implementar más lógica para que que extensión tienía el archivo origianl (o mejor formato MIME) y de ahí poner el .jpg o lo que corresponda como extensión para Codigo.ext)

Un saludo,

Última edición por Cluster; 17/08/2004 a las 07:36
  #4 (permalink)  
Antiguo 17/08/2004, 15:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.135
Antigüedad: 21 años, 5 meses
Puntos: 2
Soy rosimaj:

El comprobar si existe la imagen antes de mostrarla ya lo tengo implementado en los listados, en eso no hay problema. Lo que no sé es como mostrar el cuadro de diálogo obligando a seleccionar archivos jpg.

Entonces con "move_uploaded_file" es con lo que puedo subir la imagen al servidor? no me dará pegas con los permisos?

gracias
  #5 (permalink)  
Antiguo 17/08/2004, 16:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El procedimiento completo para el "Upload" es el que dejé en el link del manual oficial del PHP:

http://www.php.net/manual/en/features.file-upload.php

ahí tienes descrito el tipo de formulario y campo "file" que debes usar para seleccionar archivos del "cliente" (del PC del usuario y no se pueden filtrar.. muestra todos) ... ¿o esos archivos .jpg que hablas están ya en el servidor por qué los subistes ya por otro médio: FTP .. etc?

Un saludo,
  #6 (permalink)  
Antiguo 18/08/2004, 04:56
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.135
Antigüedad: 21 años, 5 meses
Puntos: 2
Como estoy trabajando en local, en principio, las he introducido manualmente, pero ahora tengo que intentar introducirlas desde la aplicación y quiero que sean jpg para crear thumbnails, ya que otros formatos me dan problemas con las funciones php correspondientes (createimagefromgif,...), por eso quiero que sean jpg, y lo ideal sería obligar al usuario a que las imagenes que intente asociar a los productos tengan ya esta extensión.

saludos
  #7 (permalink)  
Antiguo 18/08/2004, 06:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. en el proceso de Upload tienes una variable más que define el formato MIME del archivo que subes:

$_FILES['imagen']['type'] .. así que por ahí puedes validar si la imagen es JPG o no .. También creo que puedes hacerlo desde Javacript (pero siempre en última instancia usa PHP para la validación final).

El caso es que todo esto lo indica el manual oficial de PHP en el link que insisto ya te dejé hace unos mensajes atras .. Lo leistes? .. algo no entiendes? . .hicistes pruebas? ...

Un saludo,
  #8 (permalink)  
Antiguo 18/08/2004, 13:53
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 21 años, 2 meses
Puntos: 0
No pude mirarlo porque no tengo internet en casa, y no me lleve una copia para consultarla, asi que he estado avanzando mientras otras cosas. Ya he pillado una copia para poder leerlo, si tengo dudas, ya os pregunto

Muchas gracias
  #9 (permalink)  
Antiguo 18/08/2004, 15:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Rosimaj .. te recomiendo que te bajes la versión "CHM" (Help de Windows) del manual oficial de PHP .. es muyyy útil (sobre todo por su buscador) .. incluye hasta los comentarios de los usuarios (que hay en línea en php.net) ... Así podrás consultarlo "off line" sin problemas.

Un saludo,
  #10 (permalink)  
Antiguo 23/08/2004, 12:12
 
Fecha de Ingreso: agosto-2004
Mensajes: 8
Antigüedad: 19 años, 8 meses
Puntos: 0
hola cluster.... oye ... una pregunta... lo que pasa... esque necesito hacer un upload de unos archivos que se encuentran en una carpeta X, para un servidor , esta ya le desarrolle en ftp pero resulta que es para sftp.... ? no se si se pueda establecer una conexion reomota para subirlo por sftp?
  #11 (permalink)  
Antiguo 23/08/2004, 13:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
"sftp"? o "ftps"? (FTP seguro ..)

Deberías usar SSL en lugar de conexioens FTP (o ftps seguras ..) ya que el archivo en sí sube por HTTP en primera instancia a tu servidor desde tu formulario HTML .. de ahí se mueve hacia su destino definivo por el sistema de archivos del servidor: move_uploaded_file() .. o copy() y similares .. NO se hace una conexión FTP si el archivo (donde debe quedar) es el mismo servidor que subió el archivo. Otra cosa es que de tu "PC cliente" vía HTTP por el formulario HTML subas un archivo a X servidor y el archivo en sí deba quedar en Y servidor (al cual harías la conexión por FTP o FTPS)

Un saludo,
  #12 (permalink)  
Antiguo 23/08/2004, 14:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
O .... instalastes un servidor FTP en el PC que conoces la ruta del archivo (cliente) y usas PHP como cliente FTP? (para conectarte a ese PC (por FTP))

Un saludo,
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 17:30.