Dino Geek, intenta ayudarte

¿Cómo limito los tipos de archivos que se pueden cargar?


Para limitar los tipos de archivos que se pueden cargar, es fundamental implementar validaciones tanto en el lado del cliente como en el servidor. Esto asegura que solo los formatos de archivo permitidos sean aceptados y que se minimicen los riesgos de seguridad. A continuación, se describen varias estrategias y tecnologías que puedes utilizar para lograr este objetivo.

  1. Validación en el Lado del Cliente
    La validación en el lado del cliente se realiza comúnmente mediante HTML5 y JavaScript. Utilizar estas tecnologías ofrece una primera línea de defensa, aunque no debe ser la única, ya que se puede eludir fácilmente.

  1. Usar el Atributo “accept” en HTML5

El atributo `accept` del elemento `` en HTML5 permite definir qué tipos de archivos son aceptables.

```html

```

En este ejemplo, el campo de carga de archivos aceptará únicamente archivos con extensiones `.jpg`, `.jpeg`, `.png`, y `.pdf`.

  1. Validación con JavaScript

También puedes usar JavaScript para una validación adicional:

```javascript
document.querySelector(‘input[type=“file”]’).addEventListener(‘change’, function(event) { const file = event.target.files0; const allowedExtensions = [‘jpg’, ‘jpeg’, ‘png’, ‘pdf’]; const fileExtension = file.name.split(‘.’).pop();

if (!allowedExtensions.includes(fileExtension)) { alert(‘Archivo no permitido. Suba un archivo en formato .jpg, .jpeg, .png o .pdf.’); event.target.value = ‘’; // Limpiar el campo } }); ```

  1. Validación en el Lado del Servidor
    La validación en el lado del servidor es crucial porque los controles del cliente pueden ser modificados o ignorados fácilmente. A continuación, se muestra cómo se puede hacer esto en varios lenguajes de programación.

  1. PHP

En PHP, puedes utilizar la función `mime_content_type()` para comprobar el tipo MIME del archivo:

```php
$allowedMimeTypes = [‘image/jpeg’, ‘image/png’, ‘application/pdf’];

if (in_array(mime_content_type($_FILES[‘file’][‘tmp_name’]), $allowedMimeTypes)) { // El archivo es permitido
} else { // El archivo no es permitido
}
```

  1. Python (Django)

En Django, puedes añadir validación personalizada en un formulario:

```python
from django import forms

class FileUploadForm(forms.Form): file = forms.FileField()

def clean_file(self): file = self.cleaned_data.get(‘file’) allowed_types = [‘image/jpeg’, ‘image/png’, ‘application/pdf’] if file.content_type not in allowed_types: raise forms.ValidationError(‘Tipo de archivo no permitido.’) return file ```

  1. Java (Spring Boot)

En Spring Boot, puedes utilizar anotaciones en los métodos del controlador para validar el tipo de archivo:

```java
import java.util.List;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class FileUploadController {

private static final List ALLOWED_MIME_TYPES = List.of(“image/jpeg”, “image/png”, “application/pdf”); PostMapping("/upload") public String handleFileUpload(RequestParam(“file”) MultipartFile file) { if (ALLOWED_MIME_TYPES.contains(file.getContentType())) { // Archivo permitido return “Archivo cargado con éxito”; } else { // Archivo no permitido return “Tipo de archivo no permitido.”; } } } ```

  1. Ejemplos y Fuentes Utilizadas

1. [MDN Web Docs sobre el elemento `` y el atributo `accept`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept)
2. [W3Schools Ejemplo de Validación de Archivos en JavaScript](https://www.w3schools.com/jsref/event_onchange.asp)
3. [Documentación de PHP sobre `mime_content_type`](https://www.php.net/manual/en/function.mime-content-type.php)
4. [Documentación de Django sobre Formularios y Validación](https://docs.djangoproject.com/en/stable/ref/forms/validation/)
5. [Guía de Spring Boot sobre Subida y Gestión de Archivos](https://spring.io/guides/gs/uploading-files/)

Implementar estas estrategias garantizará que los tipos de archivos cargados sean los deseados, proporcionando una capa adicional de seguridad y fiabilidad a tu aplicación.


Genera artículos simplemente para optimizar tu SEO
Genera artículos simplemente para optimizar tu SEO





DinoGeek ofrece artículos sencillos sobre tecnologías complejas

¿Desea ser citado en este artículo? Es muy sencillo, contáctenos en dino@eiki.fr.

CSS | NodeJS | DNS | DMARC | MAPI | NNTP | htaccess | PHP | HTTPS | Drupal | WEB3 | LLM | Wordpress | TLD | Nombre de dominio | IMAP | TCP | NFT | MariaDB | FTP | Zigbee | NMAP | SNMP | SEO | E-Mail | LXC | HTTP | MangoDB | SFTP | RAG | SSH | HTML | ChatGPT API | OSPF | JavaScript | Docker | OpenVZ | ChatGPT | VPS | ZIMBRA | SPF | UDP | Joomla | IPV6 | BGP | Django | Reactjs | DKIM | VMWare | RSYNC | Python | TFTP | Webdav | FAAS | Apache | IPV4 | LDAP | POP3 | SMTP

| Whispers of love (API) | Déclaration d'Amour |






Aviso legal / Condiciones generales de uso