Dropup எவ்வாறு செயல்படுகிறது
Dropup தலையில்லா UI என்ற கருத்தை மையமாகக் கொண்டு கட்டமைக்கப்பட்டுள்ளது - இது அனைத்து சிக்கலான கோப்பு பதிவேற்ற தர்க்கத்தையும் கையாளுகிறது, அதே நேரத்தில் காட்சி விளக்கக்காட்சி மீது உங்களுக்கு முழுமையான கட்டுப்பாட்டை வழங்குகிறது.
கட்டமைப்பு
┌─────────────────────────────────────────────────────────────┐
│ Your React Component │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Drop Zone │ │ File List │ │ Upload Button │ │
│ │ (your UI) │ │ (your UI) │ │ (your UI) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────────┬──────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ useDropup Hook ││
│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐ ││
│ │ │Validation │ │ State │ │ Upload │ │ Platform│ ││
│ │ │ Engine │ │ Manager │ │ Engine │ │ Adapter │ ││
│ │ └───────────┘ └───────────┘ └───────────┘ └─────────┘ ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
முக்கிய கூறுகள்
1. நிலை மேலாளர்
Dropup கணிக்கக்கூடிய நிலை மேலாண்மைக்கு React இன் useReducer ஐப் பயன்படுத்துகிறது:
- அனைத்து கோப்புகளையும் அவற்றின் நிலைகளையும் கண்காணிக்கிறது
- இழுத்தல் நிலையை நிர்வகிக்கிறது
- பதிவேற்ற முன்னேற்றத்தைக் கையாளுகிறது
- கணக்கிடப்பட்ட மதிப்புகளை வழங்குகிறது
2. சரிபார்ப்பு இயந்திரம்
கோப்புகள் சேர்க்கப்படுவதற்கு முன், அவை சரிபார்ப்பு வழியாகச் செல்கின்றன:
const { files } = useDropup({
accept: 'image/*', // கோப்பு வகை சரிபார்ப்பு
maxSize: 5 * 1024 * 1024, // அதிகபட்ச கோப்பு அளவு
minSize: 1024, // குறைந்தபட்ச கோப்பு அளவு
maxFiles: 10, // அதிகபட்ச கோப்புகளின் எண்ணிக்கை
maxWidth: 4096, // அதிகபட்ச பட அகலம்
maxHeight: 4096, // அதிகபட்ச பட உயரம்
customRules: [ // தனிப்பயன் சரிபார்ப்பு
(file) => file.name.length < 100 || 'கோப்பு பெயர் மிக நீளமானது'
],
});
3. பதிவேற்ற இயந்திரம்
பதிவேற்ற இயந்திரம் கையாளுகிறது:
- எளிய பதிவேற்றங்கள் (ஒரு கோப்புக்கு ஒரு கோரிக்கை)
- துண்டு பதிவேற்றங்கள் (பெரிய கோப்புகளைப் பிரிக்கவும்)
- அதிவேக பின்வாங்கலுடன் மீண்டும் முயற்சி தர்க்கம்
- ஒரே நேரத்தில் பதிவேற்ற மேலாண்மை
- முன்னேற்றம் கண்காணிப்பு
4. தளம் அடாப்டர்
Dropup தளங்களில் செயல்படுகிறது:
- வலை - நேட்டிவ் உலாவி API களைப் பயன்படுத்துகிறது
- React Native - நேட்டிவ் கோப்பு கையாளுதலைப் பயன்படுத்துகிறது
- SSR - சர்வர்-சைட் ரெண்டரிங்கிற்கு பாதுகாப்பானது
தரவு ஓட்டம்
User Action → Validation → State Update → Upload → Callbacks
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
Select/ Accept/Reject files[] XHR/Fetch onComplete
Drop files Updated Progress onError
வடிவமைப்பு கொள்கைகள்
1. தலையில்லா முதலில்
உள்ளமைக்கப்பட்ட UI கூறுகள் இல்லை - உங்களுக்குத் தேவையானதை நீங்கள் கட்டமைக்கிறீர்கள்:
// நீங்கள் முழு UI ஐயும் கட்டுப்படுத்துகிறீர்கள்
<div {...getDropProps()}>
<YourCustomDropZone />
<input {...getInputProps()} />
</div>
2. வகை பாதுகாப்பு
விரிவான வகைகளுடன் முழு TypeScript ஆதரவு:
import type { DropupFile, UseDropupOptions } from '@samithahansaka/dropup';
const options: UseDropupOptions = {
accept: 'image/*',
onUploadComplete: (file: DropupFile) => {
console.log(file.uploadedUrl);
},
};
3. மர அசைவு
உங்களுக்குத் தேவையானதை மட்டும் இறக்குமதி செய்யுங்கள்:
// கோர் மட்டும் (~10KB)
import { useDropup } from '@samithahansaka/dropup';
// தேவைப்படும்போது கிளவுட் ஆதரவைச் சேர்க்கவும்
import { createS3Uploader } from '@samithahansaka/dropup/cloud/s3';
// தேவைப்படும்போது பட செயலாக்கத்தைச் சேர்க்கவும்
import { compressImage } from '@samithahansaka/dropup/image';
4. படிப்படியான மேம்பாடு
எளிமையாகத் தொடங்கவும், தேவைக்கேற்ப அம்சங்களைச் சேர்க்கவும்:
// அடிப்படை பயன்பாடு
const { files } = useDropup();
// சரிபார்ப்பைச் சேர்க்கவும்
const { files } = useDropup({ maxSize: 10_000_000 });
// தானியங்கி பதிவேற்றத்தைச் சேர்க்கவும்
const { files } = useDropup({
maxSize: 10_000_000,
upload: { url: '/api/upload' },
autoUpload: true,
});
// கிளவுட் சேமிப்பகத்தைச் சேர்க்கவும்
const { files } = useDropup({
upload: createS3Uploader({ getPresignedUrl }),
});