validar tamaño limitar imagen fileupload archivo php file file-upload

php - tamaño - validar input file javascript



¿Cómo limitar el tamaño de archivo de tipo de carga de archivos en PHP? (5)

Tengo un formulario de carga y estoy verificando el tamaño del archivo y el tipo de archivo para limitar el archivo cargado a 2 megabytes y a los tipos de archivo .pdf, .jpg, .gif o .png. Mi objetivo es que se muestre un mensaje de alerta al usuario si infringe una de estas reglas.

Hay cuatro escenarios:

  1. Tamaño correcto / Tipo correcto (en funcionamiento)
  2. Tamaño correcto / tipo INCORRECTO (en funcionamiento)
  3. Tamaño INCORRECTO / Tipo correcto ( no funciona )
  4. Tamaño INCORRECTO / Tipo INCORRECTO ( no funciona )

Con mi código actual, siempre muestra el mensaje "tipo" incorrecto cuando el tamaño del archivo es mayor que 2 megabytes (n. ° 4), incluso si el tipo de archivo es correcto (n. ° 3).

¿Alguna idea de por qué?

if (isset ( $_FILES[''uploaded_file''] ) ) { $file_size = $_FILES[''uploaded_file''][''size'']; $file_type = $_FILES[''uploaded_file''][''type'']; if (($file_size > 2097152)){ $message = ''File too large. File must be less than 2 megabytes.''; echo ''<script type="text/javascript">alert("''.$message.''");</script>''; } elseif ( ($file_type != "application/pdf") && ($file_type != "image/jpeg") && ($file_type != "image/jpg") && ($file_type != "image/gif") && ($file_type != "image/png") ){ $message = ''Invalid file type. Only PDF, JPG, GIF and PNG types are accepted.''; echo ''<script type="text/javascript">alert("''.$message.''");</script>''; } else { store_uploaded_file($id); } }


Algo que su código no explica está mostrando múltiples errores. Como ha indicado anteriormente, es posible que el usuario cargue un archivo> 2 MB del tipo incorrecto, pero su código solo puede informar uno de los problemas. Pruebe algo como:

if(isset($_FILES[''uploaded_file''])) { $errors = array(); $maxsize = 2097152; $acceptable = array( ''application/pdf'', ''image/jpeg'', ''image/jpg'', ''image/gif'', ''image/png'' ); if(($_FILES[''uploaded_file''][''size''] >= $maxsize) || ($_FILES["uploaded_file"]["size"] == 0)) { $errors[] = ''File too large. File must be less than 2 megabytes.''; } if(!in_array($_FILES[''uploaded_file''][''type''], $acceptable)) && (!empty($_FILES["uploaded_file"]["type"]))) { $errors[] = ''Invalid file type. Only PDF, JPG, GIF and PNG types are accepted.''; } if(count($errors) === 0) { move_uploaded_file($_FILES[''uploaded_file''][''tmpname''], ''/store/to/location.file''); } else { foreach($errors as $error) { echo ''<script>alert("''.$error.''");</script>''; } die(); //Ensure no more processing is done } }

Consulte los documentos de move_uploaded_file() (se llama mover, no almacenar) para obtener más información.


Si busca un límite estricto para todas las cargas en el sitio, puede limitar esto en php.ini configurando lo siguiente:

`upload_max_filesize = 2M`` post_max_size = 2M`

eso establecerá el límite máximo de carga en 2 MB


Espero que esto ayude :-)

if(isset($_POST[''submit''])){ ini_set("post_max_size", "30M"); ini_set("upload_max_filesize", "30M"); ini_set("memory_limit", "20000M"); $fileName=''product_demo.png''; if($_FILES[''imgproduct''][''size''] > 0 && (($_FILES["imgproduct"]["type"] == "image/gif") || ($_FILES["imgproduct"]["type"] == "image/jpeg")|| ($_FILES["imgproduct"]["type"] == "image/pjpeg") || ($_FILES["imgproduct"]["type"] == "image/png") && ($_FILES["imgproduct"]["size"] < 2097152))){ if ($_FILES["imgproduct"]["error"] > 0){ echo "Return Code: " . $_FILES["imgproduct"]["error"] . "<br />"; } else { $rnd=rand(100,999); $rnd=$rnd."_"; $fileName = $rnd.trim($_FILES[''imgproduct''][''name'']); $tmpName = $_FILES[''imgproduct''][''tmp_name'']; $fileSize = $_FILES[''imgproduct''][''size'']; $fileType = $_FILES[''imgproduct''][''type'']; $target = "upload/"; echo $target = $target .$rnd. basename( $_FILES[''imgproduct''][''name'']) ; move_uploaded_file($_FILES[''imgproduct''][''tmp_name''], $target); } } else { echo "Sorry, there was a problem uploading your file."; } }


var sizef = document.getElementById(''input-file-id'').files[0].size; if(sizef > 210000){ alert(''sorry error''); }else { //action }


Espero que esto sea útil ...

formar:

<form action="check.php" method="post" enctype="multipart/form-data"> <label>Upload An Image</label> <input type="file" name="file_upload" /> <input type="submit" name="upload"/> </form>

check.php:

<?php if(isset($_POST[''upload''])){ $maxsize=2097152; $format=array(''image/jpeg''); if($_FILES[''file_upload''][''size'']>=$maxsize){ $error_1=''File Size too large''; echo ''<script>alert("''.$error_1.''")</script>''; } elseif($_FILES[''file_upload''][''size'']==0){ $error_2=''Invalid File''; echo ''<script>alert("''.$error_2.''")</script>''; } elseif(!in_array($_FILES[''file_upload''][''type''],$format)){ $error_3=''Format Not Supported.Only .jpeg files are accepted''; echo ''<script>alert("''.$error_3.''")</script>''; } else{ $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["file_upload"]["name"]); if(move_uploaded_file($_FILES["file_upload"]["tmp_name"], $target_file)){ echo "The file ". basename($_FILES["file_upload"]["name"]). " has been uploaded."; } else{ echo "sorry"; } } } ?>