0Pricing
React Academy · Lezione

Input per file e lettura dei dati

Gestire , leggere i metadati dei file e visualizzare l'anteprima delle immagini con FileReader.

Input per file e lettura dei dati è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Benvenuto

In questa lezione gestirà gli input di file in React, leggerà i metadati dei file, visualizzerà un'anteprima delle immagini selezionate e utilizzerà l'API FileReader per elaborare i contenuti dei file.

L'elemento input di file

L'elemento `` non può essere controllato dalla prop value di React: è sempre non controllato. Legga il file selezionato da `e.target.files[0]` nel gestore onChange.
function FileInput() {
  const handleChange = (e) => {
    const file = e.target.files[0];
    console.log(file.name, file.size, file.type);
  };
  return <input type="file" onChange={handleChange} />;
}

Proprietà dell'oggetto File

Un oggetto File estende Blob e dispone di: `name` (nome del file), `size` (byte), `type` (tipo MIME come 'image/png') e `lastModified` (timestamp). Legga queste proprietà prima di caricare o elaborare il file.

Accettare tipi di file specifici

Utilizzi l'attributo `accept` per suggerire al browser quali tipi di file mostrare. Combini i tipi MIME e le estensioni. Esegua sempre anche la validazione lato server.
<input type="file" accept="image/png,image/jpeg,.pdf" />

Selezionare più file

Aggiunga l'attributo `multiple` per consentire la selezione di più file. `e.target.files` restituisce un FileList: lo trasformi in un array con `Array.from()` per utilizzare i metodi degli array.
<input type="file" multiple />

const files = Array.from(e.target.files);

Visualizzare un'anteprima con URL.createObjectURL

Crei un URL temporaneo per l'anteprima di un file immagine selezionato utilizzando `URL.createObjectURL(file)`. Quando non serve più, lo revochi con `URL.revokeObjectURL` per liberare memoria.
const [preview, setPreview] = useState(null);

const handleChange = (e) => {
  const file = e.target.files[0];
  if (file) setPreview(URL.createObjectURL(file));
};

useEffect(() => {
  return () => { if (preview) URL.revokeObjectURL(preview); };
}, [preview]);

{preview && <img src={preview} alt="Preview" />}

Leggere i contenuti dei file con FileReader

Utilizzi l'API `FileReader` per leggere i contenuti del file come testo o come URL di dati. Chiami `reader.readAsText(file)` per i file di testo oppure `reader.readAsDataURL(file)` per i file binari come le immagini.
const reader = new FileReader();
reader.onload = (e) => setContent(e.target.result);
reader.readAsText(file);

Validazione delle dimensioni del file

Convalidi le dimensioni del file sul client prima di caricarlo. Rifiuti i file più grandi di una soglia e visualizzi un messaggio di errore.
const MAX_SIZE = 5 * 1024 * 1024; // 5 MB
if (file.size > MAX_SIZE) {
  setError('File must be under 5 MB');
  return;
}

Cancellare l'input di file

Non può cancellare un input di file impostandone il valore, perché è di sola lettura. Lo reimposti invece imperativamente tramite un ref oppure modificando la prop `key` dell'input per costringerlo a essere montato nuovamente.
const inputRef = useRef();
const clear = () => { inputRef.current.value = ''; };
<input ref={inputRef} type="file" />

Memorizzare i riferimenti ai file nello stato

Memorizzi nello stato direttamente l'oggetto File, non solo il nome o l'URL. In questo modo potrà caricare il file in un secondo momento senza doverlo rileggere dal DOM.
const [file, setFile] = useState(null);
const handleChange = (e) => setFile(e.target.files[0] || null);

Verifica rapida

Quale metodo crea un URL temporaneo per visualizzare nel browser l'anteprima di un file immagine selezionato?

Riepilogo

Legga i file selezionati da e.target.files. Utilizzi URL.createObjectURL per le anteprime e FileReader per leggere i contenuti, convalidi le dimensioni sul client e memorizzi l'oggetto File nello stato per caricarlo in seguito.

Prossima lezione

Prossima lezione: **Interfaccia per il caricamento di file tramite trascinamento** — creerà una zona di trascinamento con feedback visivo utilizzando gli eventi di React.

Domande Frequenti

La lezione «Input per file e lettura dei dati» è gratuita?

Sì — il testo completo di «Input per file e lettura dei dati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Input per file e lettura dei dati»?

Gestire , leggere i metadati dei file e visualizzare l'anteprima delle immagini con FileReader. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Input per file e lettura dei dati»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Input non controllati con useRef
  2. Input per file e lettura dei dati
  3. Interfaccia di upload con trascinamento
  4. Caricamento di file su un'API backend
← Torna a React Academy