Saludos,
- Se puede hacer de dos maneras, en Client Side usando javascript y en Server Side con php, supongo que lo ideal es hacerlo en ambos lados. La ventaja de Client Side es que el archivo no se sube al servidor, no consume ancho de banda, ni hay que esperar a que el archivo termine de subirse para comprobarlo. La desventaja del Client Side es que no es seguro ya que el cliente puede editarlo a su gusto.
<form action="#" method="post" onsubmit="validar()" enctype="multipart/form-data">
<input type="file" id="fileImg" name="fileImg">
<input type="submit" value="Upload">
</form>
<script>
function validar() {
if ( document.getElementById("fileImg").files[0].size > 3000000 ) {
alert("Límite de subida es 3 MB");
event.preventDefault();
} else {
alert("Archivo permitido");
}
}
</script>
<?php
if ( isset($_FILES["fileImg"]) ) { if ( $_FILES["fileImg"]["size"] > 3000000 ) {
echo "<script>alert('Límite de subida es 3 MB')</script>"; } else {
echo "<script>alert('Archivo permitido')</script>"; // Ahora debes guardar la imagen
// move_uploaded_file($_FILES["fileImg"]["tmp_name"], "images/img01.png");
}
}
?>
- Ahora otra cosa para discutir es como tratar los Bytes, MB, MiB, etc XD, lo normal es trabajar con Bytes, y los sistemas operativos trabajan con MiB aunque diga MB pero siempre suelen poner los octetos y Bytes también, en realidad 3MB = 2.86102294921875 MiB, y así, por eso es que los vivos fabricantes de HDD, SSD, USB dicen 8GB, 64GB, 1TB, etc y en realidad en sistema operativo reconoce menos por que los mide en MiB, TiB, etc y los fabricantes si usan correctamente el MB, TB, etc