Skip to main content

FileUpload Komponens

A FileUpload egy felhasználóbarát komponens, amely lehetővé teszi fájlok feltöltését drag-and-drop funkcióval, az Ant Design Dragger komponensét használva.

Működés​

  • A felhasználók egy kijelölt területre húzhatják a feltölteni kívánt fájlokat, vagy kiválaszthatják azokat a fájlkezelőből.
  • Támogatja az egyetlen fájl feltöltését alapértelmezetten, de konfigurálható több fájl feltöltésére is (maxCount prop).
  • Visszajelzést ad a feltöltési folyamatról (sikeres vagy sikertelen), a setSuccess és setError callback függvények segítségével.
  • Megadható, hogy milyen fájltípusokat fogad el (accept prop, pl. ".pdf,.docx").
  • A feltöltési terület letiltható (disabled prop).
  • Testreszabható cím (title) és leírás (description) szövegeket jelenít meg a feltöltési területről.
  • A feltöltött fájlt a setFile callback függvényen keresztül adja vissza.

Propok​

NévTípusKötelezőAlapértelmezettLeírás
setSuccessFunctionIgen-Callback függvény, amely sikeres feltöltés esetén hívódik meg. Egy objektumot vár (pl. {title: string, message: string}).
setErrorFunctionIgen-Callback függvény, amely sikertelen feltöltés esetén hívódik meg. Egy objektumot vár (pl. {title: string, message: string}).
setFileFunctionIgen-Callback függvény, amely a feltöltött fájl objektumát adja vissza.
disabledbooleanIgenfalseHa true, a feltöltési terület letiltásra kerül.
maxCountnumberNem1A maximálisan feltölthető fájlok száma.
acceptstringNem".pdf,.docx"A vesszővel elválasztott fájltípusok listája, amelyeket a feltöltő elfogad (pl. ".pdf,.docx,.png").
titlestringNem"Húzd ide vagy válaszd ki a feltöltendő fájlodat"A feltöltési terület fő címe.
descriptionstringNemEgy alapértelmezett szöveg, amely összefoglalja az accept és maxCount beállításokat.

Használati példa​

Az alábbi példa bemutatja, hogyan lehet egy FileUpload komponenst használni egy véleményküldő űrlapon, ahol a felhasználó mellékletet csatolhat.

import { useState } from 'react';
import FileUpload from '@/components/FileUpload/FileUpload.component';
import { ErrorType } from '@/components/Error/ErrorType'; // Feltételezve, hogy exportálva van

export default function ReviewPage() {
const [error, setError] = useState<ErrorType | null>(null);
const [success, setSuccess] = useState<ErrorType | null>(null);
const [file, setFile] = useState<any>(null); // Az antd upload file objektuma

const handleSetError = (err: { title: string, message: string }) => {
setError(err);
// Opcionálisan ide jöhet egy setTimeout, ami eltünteti az üzenetet
};

const handleSetSuccess = (succ: { title: string, message: string }) => {
setSuccess(succ);
// Opcionálisan ide jöhet egy setTimeout, ami eltünteti az üzenetet
};

const handleSetFile = (uploadedFile: any) => {
setFile(uploadedFile);
console.log("Feltöltött fájl:", uploadedFile);
};

// Például letilthatjuk a feltöltést, ha már van kiválasztott fájl
const isDisabled = !!file;

return (
<div>
<h1>Vélemény küldése</h1>
{/* ... egyéb űrlap elemek ... */}

<FileUpload
disabled={isDisabled}
setError={handleSetError}
setSuccess={handleSetSuccess}
setFile={handleSetFile}
maxCount={1}
accept=".pdf,.docx"
title="Melléklet feltöltése (opcionális)"
description="Csak PDF és DOCX fájlok tölthetők fel, maximum 1 darab."
/>

{error && <p style={{ color: 'red' }}>Hiba: {error.message}</p>}
{success && <p style={{ color: 'green' }}>Siker: {success.message}</p>}
{file && <p>Kiválasztott fájl: {file.name}</p>}

{/* ... űrlap elküldése gomb ... */}
</div>
);
}