Foros del Web » Programando para Internet » PHP »

Problema insertando archivos a mySQL

Estas en el tema de Problema insertando archivos a mySQL en el foro de PHP en Foros del Web. Hola gente: Tengo esta función en subirArchivo.function.php: Código PHP: function  subirArchivo  ( $num ,  $campo ){     global  $_file ;      $name = $_FILES [ $campo ...
  #1 (permalink)  
Antiguo 06/04/2004, 16:19
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Problema insertando archivos a mySQL

Hola gente:

Tengo esta función en subirArchivo.function.php:

Código PHP:
function subirArchivo ($num$campo){
    global 
$_file;

    
$name=$_FILES[$campo]['name'];
    
$type=$_FILES[$campo]['type'];
    
$size=$_FILES[$campo]['size'];
    
    
//Archivo original en el servidor
    
$temp=$_FILES[$campo]['tmp_name']; 
    
    
//Genera el blob
    
$file addslashes(fread(fopen($temp"rb"), filesize($temp)));
    
    
//Los valores que regresa son:
    
$_file["name".$num] = $name;
    
$_file["type".$num] = $type;
    
$_file["size".$num] = $size;
    
$_file["file".$num] = $file;

... que me devuelve un array $_file con el nombre del archivo, el tipo, el tamaño en bytes y el archivo en sí para ser insertado en un campo longblob de una tabla mySQL

La inserción la hago así:

Código PHP:
//Me conecto líneas arriba como siempre y luego...

//Si se subió el archivo, corre la función...
if (isset($_FILES["zip"]["name"])){
    include(
'subirArchivo.function.php');
    
subirArchivo(1'zip');

//Inserta en la DB
  
$insertSQL sprintf("INSERT INTO tabla    
  (nombreArchivo, tamanoArchivo, tipoArchivo, datosArchivo) 
  VALUES ('%s', '%s', '%s', '%s')"

  
$_file['name1'], $_file['size1'], $_file['type1'],  $_file['file1']);

  
mysql_select_db($database_conexion$conexion);
  
$Result1 mysql_query($insertSQL$conexion) or die("No chambea");

Funciona a todo dar siempre que sea un archivo de menos de 1 Mb, pero cuando trato de subir archivos más pesados no me deja.

Nota:

El tamano máximo de upload de archivos según mi proveedor es de 2 Mb.

El cliente requiere que el archivo se almacene en la DB, entre otras razones, para no hacer accesibles los archivos a usuarios no validados. No quiero usar htpasswd porque es muy fácil de violar, pero se aceptan alternativas.

¿Qué estaré haciendo mal?
¿Tiene un límite menor a 1 mega el campo longblob?
¿Hay otra manera de subir archivos y evitar que la gente los pueda bajar escribiendo su URL?

Se aceptan ideas...

Desde ya, GRACIAS!!!!
  #2 (permalink)  
Antiguo 06/04/2004, 18:48
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
alternativa: colocar los archivos fuera del documentroot y tener un script que los lea y los entregue usando las cabeceras html adecuadas a su tipo.
Usar las funciones para el manejo de ficheros.

www.php.net/manual/es/ref.filesystem.php

en las faq creo que hay ejemplos.
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
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 21:55.