51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
"use client";
|
|
import React, { useState } from "react";
|
|
|
|
const CargaArchivo: React.FC = () => {
|
|
const [archivo, setArchivo] = useState<File | null>(null);
|
|
|
|
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
const file = e.target.files?.[0];
|
|
if (file) setArchivo(file);
|
|
};
|
|
|
|
const handleUpload = async () => {
|
|
if (!archivo) return;
|
|
|
|
const formData = new FormData();
|
|
formData.append("archivo", archivo);
|
|
|
|
const res = await fetch("/api/cargar-archivo", {
|
|
method: "POST",
|
|
body: formData,
|
|
});
|
|
|
|
if (res.ok) {
|
|
alert("Archivo subido correctamente");
|
|
setArchivo(null);
|
|
} else {
|
|
alert("Error al subir archivo");
|
|
}
|
|
};
|
|
|
|
return (
|
|
<div className="w-full">
|
|
<input
|
|
type="file"
|
|
accept=".xls,.xlsx"
|
|
onChange={handleChange}
|
|
className="mb-4 block text-sm"
|
|
/>
|
|
<button
|
|
onClick={handleUpload}
|
|
disabled={!archivo}
|
|
className="bg-blue-600 text-white px-4 py-2 rounded hover:bg-blue-700"
|
|
>
|
|
Subir archivo
|
|
</button>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default CargaArchivo;
|