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!!!!