Subir archivos a una API de backend
Utilice FormData y fetch para enviar archivos mediante POST y realizar un seguimiento del progreso de carga.
Subir archivos a una API de backend es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
Bienvenida
API FormData
const formData = new FormData();
formData.append('file', selectedFile);
formData.append('description', 'Profile photo');Carga con fetch
const response = await fetch('/api/upload', {
method: 'POST',
body: formData,
// Do not set Content-Type header here!
});Gestión del estado de carga
const [uploading, setUploading] = useState(false);
const [progress, setProgress] = useState(0);
const [error, setError] = useState(null);Progreso de carga con XMLHttpRequest
const xhr = new XMLHttpRequest();
xhr.upload.onprogress = (e) => {
if (e.lengthComputable) {
setProgress(Math.round((e.loaded / e.total) * 100));
}
};
xhr.open('POST', '/api/upload');
xhr.send(formData);Envoltura de XHR en una Promise
function uploadFile(file) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = () => resolve(xhr.response);
xhr.onerror = () => reject(new Error('Upload failed'));
xhr.upload.onprogress = (e) => setProgress(Math.round(e.loaded / e.total * 100));
xhr.open('POST', '/api/upload');
xhr.send(new FormData().set && (() => { const f = new FormData(); f.append('file', file); xhr.send(f); })());
});
}Gestión de la respuesta del servidor
const res = await fetch('/api/upload', { method: 'POST', body: fd });
if (!res.ok) throw new Error('Upload failed');
const { url } = await res.json();
setUploadedUrl(url);Gestión de errores
try {
setUploading(true);
await uploadToServer(file);
} catch (err) {
setError(err.message);
} finally {
setUploading(false);
}Cancelación de una carga
const abortRef = useRef();
const start = async () => {
abortRef.current = new AbortController();
await fetch('/api/upload', { body: fd, signal: abortRef.current.signal });
};
const cancel = () => abortRef.current?.abort();Cargas de varios archivos
Comprobación rápida
Resumen
Curso completado
Preguntas frecuentes
¿La lección «Subir archivos a una API de backend» es gratis?
Sí — el texto completo de «Subir archivos a una API de backend» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Subir archivos a una API de backend»?
Utilice FormData y fetch para enviar archivos mediante POST y realizar un seguimiento del progreso de carga. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Subir archivos a una API de backend»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Inputs no controlados con useRef
- Input de archivo y lectura de datos
- Interfaz de carga de archivos mediante arrastrar y soltar
- Subir archivos a una API de backend