php - subir - ¿Cómo probar si un usuario ha SELECCIONADO un archivo para cargar?
upload file php example (5)
en una página, tengo:
if (!empty($_FILES[''logo''][''name''])) {
$dossier = ''upload/'';
$fichier = basename($_FILES[''logo''][''name'']);
$taille_maxi = 100000;
$taille = filesize($_FILES[''logo''][''tmp_name'']);
$extensions = array(''.png'', ''.jpg'', ''.jpeg'');
$extension = strrchr($_FILES[''logo''][''name''], ''.'');
if(!in_array($extension, $extensions)) {
$erreur = ''ERROR you must upload the right type'';
}
if($taille>$taille_maxi) {
$erreur = ''too heavy'';
}
if(!empty($erreur)) {
// ...
}
}
El problema es que si los usuarios quieren editar información SIN subir un LOGOTIPO, se genera un error: ''error debes subir el tipo correcto''
Entonces, si un usuario no colocó nada en la casilla de entrada para subirlo, no quiero ingresar en estas condiciones prueba.
Probé: if (!empty($_FILES[''logo''][''name''])
y if (isset($_FILES[''logo''][''name''])
pero ninguno parece funcionar.
¿Algunas ideas?
editar: tal vez no estaba tan claro, no quiero probar si cargó un logotipo, quiero probar SI seleccionó un archivo para cargar, porque ahora mismo, si no selecciona un archivo para cargar, php genera un error que indica que debe cargar con el formato correcto.
Gracias.
Debes usar is_uploaded_file($_FILES[''logo''][''tmp_name'']) para asegurarte de que el archivo se haya subido a través de un POST.
Hay una sección en la documentación de PHP sobre el manejo de archivos . find que puede verificar varios errores y uno de ellos es
UPLOAD_ERR_OK
Value: 0; There is no error, the file uploaded with success.
<...>
UPLOAD_ERR_NO_FILE
Value: 4; No file was uploaded.
En tu caso necesitas código como
if ($_FILES[''logo''][''error''] == UPLOAD_ERR_OK) { ... }
o
if ($_FILES[''logo''][''error''] != UPLOAD_ERR_NO_FILE) { ... }
Debería considerar verificar (y probablemente proporcionar la respuesta adecuada para un usuario) para otros varios errores también.
Puedes verificar esto con:
if (empty($_FILES[''logo''][''name''])) {
// No file was selected for upload, your (re)action goes here
}
O puede usar una construcción de JavaScript que solo habilita el botón de carga / envío siempre que el campo de carga tenga un valor distinto de una cadena vacía ("") para evitar el envío del formulario sin subirlo.
Yo probaría if ( file_exists ($_FILES[''logo''][''tmp_name'']))
y ver si funciona.
O, más apropiadamente (gracias Baloo): if ( is_uploaded_file ($_FILES[''logo''][''tmp_name'']))
if ($_FILES[''logo''][''error''] === 0)
es la única forma correcta