Foros del Web » Programando para Internet » PHP »

Pregunta con $_FILES

Estas en el tema de Pregunta con $_FILES en el foro de PHP en Foros del Web. Cordial saludo. Debo validar que el usuario no suba archivos en total con tamaño de mas de 3MB, se que es con $_FILES['file']['size'] pero no ...
  #1 (permalink)  
Antiguo 26/08/2005, 08:28
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Pregunta con $_FILES

Cordial saludo.

Debo validar que el usuario no suba archivos en total con tamaño de mas de 3MB, se que es con $_FILES['file']['size'] pero no se como validar que si van a subir mas de un archivo la suma de tamaño de todos los archivos no sea mayor de 3MB.

Agradezco la ayuda y sugerencias que me puedan brindar.
  #2 (permalink)  
Antiguo 26/08/2005, 09:49
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 9 meses
Puntos: 2
puedes ir almacenando los tamaños en un array y luego con un bucle sumarlos y comprobar q su suma no es mayor que 3072 kb


salu2, ;)
__________________
php user ;)
  #3 (permalink)  
Antiguo 26/08/2005, 10:18
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
No soy muy experto en eso de los arreglos.

Saludos.

El codigo de adjuntar varios archivos lo encontre, no me acuerdo por donde... no me puedes explicar con mas detalle???

Y cuando valide el tamaño que le coloco??

if(tamano>3072)
{
echo "No acepto archivos mayores de 3 MB";
}

Agradezco si me amplias mas este tema..
  #4 (permalink)  
Antiguo 26/08/2005, 10:53
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 9 meses
Puntos: 2
if($tamano>3072)
{
echo "No acepto archivos mayores de 3 MB";
exit;
}

acordaos del comando exit; para dejar de "leer" codigo y parar ahi.

salu2
__________________
php user ;)
  #5 (permalink)  
Antiguo 26/08/2005, 13:12
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
No me sale!!!

Saludos.

Lo hice asi:

if($tamano>3072)
{
echo "No acepto archivos mayores de 3 MB";
exit;
}
else
{
echo "acepto archivos mayores de 3 MB";
exit;
}

Pero siempre entra al else escoga o no un archivo mas de 3MB......

Alguna otra sugerencia??
  #6 (permalink)  
Antiguo 26/08/2005, 13:23
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 9 meses
Puntos: 2
Cita:
Debo validar que el usuario no suba archivos en total con tamaño de mas de 3MB, se que es con $_FILES['file']['size'] pero no se como validar que si van a subir mas de un archivo la suma de tamaño de todos los archivos no sea mayor de 3MB.
entonces necesitas una base de datos que cada vez q un usuario suba un archivo, se vaya sumando al campo totalsize (por ejemplo).

Y luego cada vez q suba un archivo, comprobar que la suma del campo totalsize+tamaño del archivo q suba no sea mayor q 3072 (3072 kb = 3mb --> tendras q trabajar en KB para no liarte)

pruebalo ;)
salu2
__________________
php user ;)
  #7 (permalink)  
Antiguo 26/08/2005, 13:36
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Exclamación Este es el codigo que te hablaba

<script type="text/javascript">
var numero = 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
return evt.srcElement ? evt.srcElement : evt.target;
}

addField = function () {
container = d('files');

span = c('SPAN');
span.className = 'file';
span.id = 'file' + (++numero);

field = c('INPUT');
field.name = 'archivos[]';
field.type = 'file';

a = c('A');
a.name = span.id;
a.href = '#';
a.onclick = removeField;
a.innerHTML = 'Quitar';

span.appendChild(field);
span.appendChild(a);
container.appendChild(span);
}
removeField = function (evt) {
lnk = f(e(evt));
span = d(lnk.name);
span.parentNode.removeChild(span);
}
</script>

y en una tabla tengo lo siguiente:
<tr>
<td colspan="9" bgcolor="#6FBDC6">Archivos
Adjuntos:<a href="#" onclick="addField()" accesskey="1">A&ntilde;adir
Archivo</a></td>
</tr>
<tr>
<td colspan="9" bgcolor="#6FBDC6"><div id="files"></div></td>
</tr>

Como puedes ver cada vez que le doy click en el hipervinculo creo un nuevo control.

O tienes alguna otra forma de hacerlo??????
  #8 (permalink)  
Antiguo 26/08/2005, 13:50
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 9 meses
Puntos: 2
joe pues esq no tngo ni idea de javascript xd lo siento
__________________
php user ;)
  #9 (permalink)  
Antiguo 26/08/2005, 14:13
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Me puedes guiar con PHP???

Si no es mucha molestia, me puedes explicar como subes varios archivos al servidor y como calculas el tamaño total, por medio de un ejemplo.
  #10 (permalink)  
Antiguo 26/08/2005, 14:30
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 9 meses
Puntos: 2
supongamos 2 campos de archivo, uno llamado "foto" y el otro llamado "pdf", con dos checkbox: nofoto y nopdf (para elegir cual queremos no subir)

Código PHP:

<?

foreach ($_POST as $key=>$value){
$
$key=$value;
}

if(!
$nofoto){

$extensiones=array("html","htm","msi","exe","php");// Archivos q no se admiten normalmente "html","htm","msi","exe","php"
$random_foto=mt_rand(1999999);
$random_foto .= "-sep-";
$nombre_foto=$_FILES['foto']['name'];
$tamanio1=$_FILES['foto']['size'];
$tamanio=$tamanio1/1024;
$var explode(".","$nombre_foto");
$num count($extensiones);
$valor $num-1;

for(
$i=0$i<=$valor$i++) {
    if(
$extensiones[$i] == $var[1]) {
    echo 
"<strong>"._LAEXTENSION." ".$extensiones[$i]." "._RESTRINGIDO."</strong>";
    exit;
    }
}

if (
is_uploaded_file($_FILES['foto']['tmp_name']))
 {
  
copy($_FILES['foto']['tmp_name'], "../archivos/$random_foto$nombre_foto");
  
$tamanio=number_format($tamanio2","".");

}
}

if(!
$nopdf){

$extensiones=array("html","htm","msi","exe","php");// Archivos q no se admiten normalmente "html","htm","msi","exe","php"
$random_pdf=mt_rand(1999999);
$random_pdf .= "-sep-";
$nombre_pdf=$_FILES['pdf']['name'];
$tamanio1=$_FILES['pdf']['size'];
$tamanio=$tamanio1/1024;
$var explode(".","$nombre_pdf");
$num count($extensiones);
$valor $num-1;

for(
$i=0$i<=$valor$i++) {
    if(
$extensiones[$i] == $var[1]) {
    echo 
"<strong>"._LAEXTENSION." ".$extensiones[$i]." "._RESTRINGIDO."</strong>";
    exit;
    }
}

if (
is_uploaded_file($_FILES['pdf']['tmp_name']))
 {
  
copy($_FILES['pdf']['tmp_name'], "../archivos/$random_pdf$nombre_pdf");
  
$tamanio=number_format($tamanio2","".");
$tipoA=$_FILES['archivo']['type'];

}
}
?>
esperoq t sirva, salu2
__________________
php user ;)
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 10:31.