Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2008, 11:33
Avatar de softmaster
softmaster
 
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 15 años, 4 meses
Puntos: 12
Pregunta Problemas con validar upload de imagen

Tengo un problemita al validar el archivo a subir.. necesito una ayudita

Estoy usando el sistema para guardar las imagenes en la base de datos que nos enseño cluster :

http://www.forosdelweb.com/f18/tutorial-ejemplo-subir-archivos-bd-guardando-bd-binario-127775/

Yo en particular tengo un formulario para saber otros datos ademas de la imagen a subir.. me funciona todo.. solo que no logro validar el tipo de archivo y tamaño a subir del archivo, yo solo necesito que se suban fotos a la base de datos por ejemplo .jpg, .gif, .png y un tamaño maximo de 300 kb.



Este es el formulario:

Código PHP:
<FORM name="add" enctype="multipart/form-data" method="post" action="insertar.php">
<table width="613" border="0" align="center">
  <tr>
    <td width="123" valign="top"><div align="left">Titulo*</div></td>
    <td width="480"><INPUT name="titulo" type="text" id="titulo" value="" size="80" />
      </div></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Descripcion*</div></td>
    <td><textarea name="descripcion" cols="61" rows="10" id="descripcion"></textarea></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Tags*</div></td>
    <td><INPUT name="tag" type="text" id="tag" value="" size="80" /></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Categoria*</div></td>
    <td><label>
        <select name="categoria" id="categoria">
        <?php do { ?>
          <option value="<?php echo $row_categorias['categoria']; ?>"><?php echo ucfirst($row_categorias['categoria']); ?></option>
          <?php } while ($row_categorias mysql_fetch_assoc($categorias)); ?>
            </select>
    </label></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Formas de contacto</div></td>
    <td><textarea name="forma_contacto" cols="61" rows="3"></textarea></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Url</div></td>
    <td><INPUT type="text" name="url" value="" size="50" /></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Pais*</div></td>
    <td>
    <?php generaPaises(); ?>
    </td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Estado*</div></td>
    <td><select disabled="disabled" name="estados" id="estados">
                        <option value="0">Selecciona opci&oacute;n...</option>
                    </select></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Ciudad</div></td>
    <td><INPUT name="ciudad" type="text" id="ciudad" size="32"></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">Foto</div></td>
    <td><INPUT type="file" name="archivo" size="50"></td>
  </tr>
  
  <tr>
    <td valign="top"><div align="left">Email</div></td>
    <td><INPUT name="email" type="text" id="email" value="" size="50" /></td>
  </tr>
  <tr>
    <td valign="top"><div align="left">ok</div></td>
    <td><INPUT type="button" name="button" value="Anunciar" onclick="valida_envia()"></td>
  </tr>
</table>
</FORM>

insertar.php
(Con este se logra saber los datos del archivo a subir para guardar el archivo en la base de datos)

Código PHP:
<?php
//establece una conexión con la base de datos.
$conexion mysql_connect("localhost","admin","1234") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("anuncio",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

//insertamos los datos en la BD.
$consulta_insertar "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo, titulo, descripcion, tag, categoria, email, forma_contacto, url, pais, estado, ciudad) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo', '{$_POST['titulo']}', '{$_POST['descripcion']}', '{$_POST['tag']}', '{$_POST['categoria']}', '{$_POST['email']}', '{$_POST['forma_contacto']}', '{$_POST['url']}', '{$_POST['pais']}', '{$_POST['estados']}', '{$_POST['ciudad']}')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: formulario.php");  // si ha ido todo bien
exit;
?>

El tema es que yo estoy validando todos los otros datos del formulario del lado del cliente no del servidor y la verdad estoy bastante confundida.. por que busque por todos lados hace ya varios dias y no encuentro nada que me sirva..

Se puede llegar a validar el tipo de formato y peso de la imagen a subir a la base de datos.. pero del lado del usuario utilizando este sistema ???

Es que no se mucho de php.. estoy empezando.

Bueno saludos y gracias por tenerme paciencia jeje