Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2004, 16:19
Avatar de Escoffie
Escoffie
 
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años, 7 meses
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!!!!