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:
- Tamaño correcto / Tipo correcto (en funcionamiento)
- Tamaño correcto / tipo INCORRECTO (en funcionamiento)
- Tamaño INCORRECTO / Tipo correcto ( no funciona )
- 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";
}
}
}
?>