Erste Schritte mit Dropup
Dropup ist eine leichtgewichtige, headless React-Bibliothek für Datei-Uploads, die Ihnen die volle Kontrolle über Ihre Benutzeroberfläche gibt, während sie die gesamte komplexe Upload-Logik übernimmt.
Warum Dropup?
- 🪶 Leichtgewichtig - Der Kern ist nur ~10KB gzipped
- 🎨 Headless - Volle Kontrolle über Ihre UI mit Hooks-basierter API
- 📁 Drag & Drop - Eingebaute Drag-and-Drop-Unterstützung
- 📊 Fortschrittsverfolgung - Echtzeit-Upload-Fortschritt für jede Datei
- 🔄 Chunked Uploads - Große Dateien für zuverlässige Uploads aufteilen
- ☁️ Cloud-Ready - Vorgefertigte Helfer für S3, GCS und Azure
- 🖼️ Bildverarbeitung - Eingebaute Komprimierung und Vorschau-Generierung
- 📱 Plattformübergreifend - Funktioniert mit React DOM und React Native
- 🔒 TypeScript - Volle TypeScript-Unterstützung
Installation
Installieren Sie Dropup mit Ihrem bevorzugten Paketmanager:
npm install @samithahansaka/dropup
Peer-Abhängigkeiten
Dropup erfordert React 16.8 oder höher (für Hooks-Unterstützung):
npm install react
Schnellstart
Hier ist ein einfaches Beispiel für den Einstieg:
import { useDropup } from '@samithahansaka/dropup';
function FileUploader() {
const {
files,
state,
actions,
getDropProps,
getInputProps
} = useDropup({
accept: 'image/*',
maxSize: 10 * 1024 * 1024, // 10MB
multiple: true,
});
return (
<div>
{/* Ablagezone */}
<div
{...getDropProps()}
style={{
border: state.isDragging ? '2px dashed blue' : '2px dashed gray',
padding: 40,
textAlign: 'center',
cursor: 'pointer',
}}
>
<input {...getInputProps()} />
<p>Dateien hierher ziehen oder klicken zum Auswählen</p>
</div>
{/* Dateiliste */}
<ul>
{files.map((file) => (
<li key={file.id}>
{file.name} - {file.status}
{file.status === 'uploading' && ` (${file.progress}%)`}
<button onClick={() => actions.remove(file.id)}>Entfernen</button>
</li>
))}
</ul>
{/* Upload-Button */}
{files.length > 0 && (
<button onClick={() => actions.upload()}>
Alle hochladen
</button>
)}
</div>
);
}
Kernkonzepte
1. Der useDropup Hook
Der useDropup Hook ist der Haupteinstiegspunkt. Er gibt alles zurück, was Sie zum Erstellen Ihrer Datei-Upload-Oberfläche benötigen:
const {
files, // Array von Dateien mit Status, Fortschritt usw.
state, // Gesamtstatus (isDragging, isUploading, progress)
actions, // Methoden zum Hochladen, Entfernen, Abbrechen, Zurücksetzen
getDropProps, // Props für Ihr Ablagezonen-Element
getInputProps, // Props für das versteckte Datei-Input
} = useDropup(options);
2. Datei-Objekte
Jede Datei im files-Array enthält:
{
id: string; // Eindeutige Kennung
file: File; // Ursprüngliches File-Objekt
name: string; // Dateiname
size: number; // Dateigröße in Bytes
type: string; // MIME-Typ
preview?: string; // Vorschau-URL (für Bilder)
status: 'idle' | 'uploading' | 'complete' | 'error';
progress: number; // Upload-Fortschritt (0-100)
error?: Error; // Fehlerobjekt bei fehlgeschlagenem Upload
uploadedUrl?: string; // URL nach erfolgreichem Upload
}
3. Aktionen
Das actions-Objekt bietet Methoden zur Steuerung von Uploads:
actions.upload(fileIds?) // Upload starten (alle oder bestimmte Dateien)
actions.cancel(fileId?) // Upload(s) abbrechen
actions.remove(fileId) // Eine Datei aus der Liste entfernen
actions.reset() // Alle Dateien löschen
actions.retry(fileIds?) // Fehlgeschlagene Uploads wiederholen
Uploads konfigurieren
Um tatsächliche Uploads zu aktivieren, geben Sie eine Upload-Konfiguration an:
const { files } = useDropup({
upload: {
url: '/api/upload',
method: 'POST',
headers: {
'Authorization': 'Bearer token',
},
},
autoUpload: true, // Automatisch hochladen, wenn Dateien hinzugefügt werden
});
Nächste Schritte
- Erfahren Sie mehr über Validierungsoptionen
- Sehen Sie weitere Beispiele
- Erkunden Sie Cloud-Speicher-Integrationen
- Lesen Sie die vollständige API-Referenz