முக்கிய உள்ளடக்கத்திற்குச் செல்

அடிக்கடி கேட்கப்படும் கேள்விகள்

Dropup பற்றிய பொதுவான கேள்விகள் மற்றும் பதில்கள்.

பொது

Dropup என்றால் என்ன?

Dropup என்பது கோப்பு பதிவேற்றங்களுக்கான இலகுவான, தலைப்பில்லா React நூலகமாகும். இது இழுத்து-விடு செயல்பாடு, கோப்பு சரிபார்ப்பு, பதிவேற்ற முன்னேற்ற கண்காணிப்பு மற்றும் கிளவுட் சேமிப்பு ஆதரவை வழங்குகிறது - அனைத்தும் 10KB gzipped க்குக் கீழே ஒரு தொகுப்பில்.

"தலைப்பில்லா" என்றால் என்ன?

தலைப்பில்லா என்றால் Dropup எந்த UI கூறுகளையும் உள்ளடக்கவில்லை. இது தர்க்கம் மற்றும் நிலை மேலாண்மையை வழங்குகிறது, நீங்கள் விரும்பியபடி UI ஐ உருவாக்கலாம். இது தோற்றம் மற்றும் உணர்வு மீது முழு கட்டுப்பாட்டை உங்களுக்கு வழங்குகிறது.

தொகுப்பு அளவு என்ன?

  • முக்கிய (@samithahansaka/dropup): < 10KB gzipped
  • கிளவுட் ஆதரவுடன்: ஒவ்வொரு வழங்குநருக்கும் +2KB
  • படச் செயலாக்கத்துடன்: +5KB
  • tus நெறிமுறையுடன்: +3KB (tus-js-client பியர் தேவை)

இது TypeScript ஐ ஆதரிக்கிறதா?

ஆம்! Dropup TypeScript இல் எழுதப்பட்டது மற்றும் விரிவான வகை வரையறைகளை உள்ளடக்கியது. @types தொகுப்பு தேவையில்லை.

எந்த React பதிப்பு தேவை?

React 16.8+ (ஹூக்ஸ் ஆதரவு தேவை).

பயன்பாடு

கோப்புகளை எவ்வாறு பதிவேற்றுவது?

const { files, actions } = useDropup({
upload: { url: '/api/upload' },
});

// அனைத்து கோப்புகளையும் பதிவேற்று
actions.upload();

// குறிப்பிட்ட கோப்புகளை பதிவேற்று
actions.upload(['file-id-1', 'file-id-2']);

சரிபார்ப்பு பிழைகளை எவ்வாறு கையாள்வது?

useDropup({
accept: 'image/*',
maxSize: 5 * 1024 * 1024,

onValidationError: (errors) => {
errors.forEach(({ file, errors }) => {
console.log(`${file.name}: ${errors.join(', ')}`);
});
},
});

தனிப்பயன் பதிவேற்ற தர்க்கத்தைப் பயன்படுத்த முடியுமா?

ஆம்! கட்டமைப்பு பொருளுக்குப் பதிலாக ஒரு செயல்பாட்டை அனுப்பவும்:

useDropup({
upload: async (file, options) => {
const { signal, onProgress } = options;

// உங்கள் தனிப்பயன் பதிவேற்ற தர்க்கம்
const response = await customUpload(file.file, {
signal,
onProgress,
});

return { url: response.url };
},
});

நிரல்ரீதியாக கோப்புகளை எவ்வாறு சேர்ப்பது?

const { actions } = useDropup();

// கிளிப்போர்டிலிருந்து
document.addEventListener('paste', (e) => {
const files = e.clipboardData?.files;
if (files) {
actions.addFiles(files);
}
});

பல விடு மண்டலங்கள் இருக்க முடியுமா?

ஆம்! ஒவ்வொரு useDropup அழைப்பும் சுயாதீன நிகழ்வை உருவாக்குகிறது:

const images = useDropup({ accept: 'image/*' });
const documents = useDropup({ accept: '.pdf' });

// தனித்தனியாக பயன்படுத்தவும்
<div {...images.getDropProps()}>...</div>
<div {...documents.getDropProps()}>...</div>

பதிவேற்றங்கள்

பதிவேற்ற முன்னேற்றத்தை எவ்வாறு காட்டுவது?

const { files } = useDropup({ upload: { url: '/api/upload' } });

{files.map(file => (
<div key={file.id}>
{file.name}: {file.progress}%
</div>
))}

பதிவேற்றத்தை எவ்வாறு ரத்துசெய்வது?

const { actions } = useDropup();

// குறிப்பிட்ட கோப்பை ரத்துசெய்
actions.cancel('file-id');

// அனைத்து பதிவேற்றங்களையும் ரத்துசெய்
actions.cancel();

தோல்வியுற்ற பதிவேற்றங்களை எவ்வாறு மீண்டும் முயற்சிப்பது?

const { actions } = useDropup();

// குறிப்பிட்ட கோப்புகளை மீண்டும் முயற்சி
actions.retry(['file-id']);

// அனைத்து தோல்வியுற்றவற்றை மீண்டும் முயற்சி
actions.retry();

இது துண்டு பதிவேற்றங்களை ஆதரிக்கிறதா?

ஆம்! createChunkedUploader ஐப் பயன்படுத்தவும்:

import { createChunkedUploader } from '@samithahansaka/dropup';

useDropup({
upload: createChunkedUploader({
url: '/api/upload/chunk',
chunkSize: 5 * 1024 * 1024, // 5MB
}),
});

நேரடியாக S3 க்கு பதிவேற்ற முடியுமா?

ஆம்! கிளவுட் பதிவேற்றியைப் பயன்படுத்தவும்:

import { createS3Uploader } from '@samithahansaka/dropup/cloud/s3';

useDropup({
upload: createS3Uploader({
getPresignedUrl: async (file) => {
const res = await fetch('/api/s3/presign', {
method: 'POST',
body: JSON.stringify({ filename: file.name }),
});
return res.json();
},
}),
});

சரிபார்ப்பு

கோப்பு வகைகளை எவ்வாறு கட்டுப்படுத்துவது?

// MIME வகையால்
useDropup({ accept: 'image/*' });

// நீட்டிப்பால்
useDropup({ accept: '.pdf, .doc' });

// பல
useDropup({ accept: ['image/*', 'application/pdf'] });

அளவு வரம்புகளை எவ்வாறு அமைப்பது?

useDropup({
maxSize: 10 * 1024 * 1024, // 10MB அதிகபட்சம்
minSize: 1024, // 1KB குறைந்தபட்சம்
});

கோப்புகளின் எண்ணிக்கையை எவ்வாறு வரம்பிடுவது?

useDropup({
maxFiles: 5,
});

தனிப்பயன் சரிபார்ப்பைச் சேர்க்க முடியுமா?

ஆம்! customRules ஐப் பயன்படுத்தவும்:

useDropup({
customRules: [
(file) => {
if (file.name.includes('draft')) {
return 'வரைவு கோப்புகள் அனுமதிக்கப்படவில்லை';
}
return true;
},
],
});

முன்னோட்டங்கள்

பட முன்னோட்டங்களை எவ்வாறு காட்டுவது?

முன்னோட்டங்கள் இயல்பாக இயக்கப்பட்டுள்ளன:

const { files } = useDropup();

{files.map(file => (
file.preview && <img src={file.preview} alt="" />
))}

முன்னோட்ட URL களை சுத்தம் செய்ய வேண்டுமா?

இல்லை! கோப்புகள் நீக்கப்படும்போது அல்லது கூறு அன்மவுண்ட் ஆகும்போது Dropup தானாகவே Object URL களை ரிவோக் செய்கிறது.

முன்னோட்டங்களை முடக்க முடியுமா?

useDropup({ generatePreviews: false });

சிக்கல் தீர்வு

கோப்புகள் பதிவேறவில்லை

  1. upload கட்டமைக்கப்பட்டுள்ளதா சரிபார்க்கவும்:

    useDropup({ upload: { url: '/api/upload' } });
  2. actions.upload() ஐ அழைக்கிறீர்களா என்று உறுதிசெய்யவும் (autoUpload: true இல்லாவிட்டால்)

  3. நெட்வொர்க் பிழைகளுக்கு உலாவி கன்சோலைச் சரிபார்க்கவும்

முன்னோட்ட URL கள் வேலை செய்யவில்லை

  1. கோப்பு ஒரு படம் என்பதை உறுதிசெய்யவும்
  2. generatePreviews false இல்லை என சரிபார்க்கவும்
  3. கோப்பு பொருளில் செல்லுபடியான preview பண்பு உள்ளதா சரிபார்க்கவும்

இழுத்து விடு வேலை செய்யவில்லை

  1. ஒரு கொள்கலன் உறுப்பில் getDropProps() ஐ பரப்புகிறீர்களா உறுதிசெய்யவும்
  2. மறைக்கப்பட்ட உள்ளீட்டை உள்ளடக்கவும்: <input {...getInputProps()} />
  3. disabled true இல்லை என சரிபார்க்கவும்

TypeScript பிழைகள்

  1. சமீபத்திய Dropup பதிப்பிற்கு புதுப்பிக்கவும்
  2. tsconfig.json இல் சரியான moduleResolution உள்ளதா உறுதிசெய்யவும்
  3. @samithahansaka/dropup dependencies இல் உள்ளதா சரிபார்க்கவும், devDependencies இல் அல்ல

நினைவக கசிவுகள்

  1. useDropup பயன்படுத்தும் கூறுகள் சரியாக அன்மவுண்ட் ஆகின்றன என்பதை உறுதிசெய்யவும்
  2. தேவைப்பட்டால் அன்மவுண்ட் செய்வதற்கு முன் actions.reset() ஐ அழைக்கவும்
  3. சுத்தம் இல்லாமல் வெளிப்புற நிலையில் கோப்புகளை சேமிக்காதீர்கள்

இணக்கத்தன்மை

இது Next.js உடன் வேலை செய்யுமா?

ஆம்! 'use client' உத்தரவைப் பயன்படுத்தவும்:

'use client';
import { useDropup } from '@samithahansaka/dropup';

இது React Native உடன் வேலை செய்யுமா?

ஆம்! நேட்டிவ் அடாப்டரைப் பயன்படுத்தவும்:

import { NativeAdapter } from '@samithahansaka/dropup/native';

useDropup({ adapter: NativeAdapter });

இது SSR ஐ ஆதரிக்கிறதா?

ஆம்! Dropup SSR-பாதுகாப்பானது. உலாவி API கள் கிடைக்கும்போது மட்டுமே அவற்றைப் பயன்படுத்துகிறது.

உலாவி ஆதரவு?

அனைத்து நவீன உலாவிகள்:

  • Chrome 60+
  • Firefox 55+
  • Safari 12+
  • Edge 79+

பங்களிப்பு

எவ்வாறு பங்களிக்கலாம்?

  1. களஞ்சியத்தை ஃபோர்க் செய்யவும்
  2. ஒரு அம்ச கிளையை உருவாக்கவும்
  3. ஒரு புல் கோரிக்கையை சமர்ப்பிக்கவும்

விவரங்களுக்கு CONTRIBUTING.md ஐப் பாருங்கள்.

பிழைகளை எவ்வாறு புகாரளிப்பது?

github.com/samithahansaka/dropup/issues இல் ஒரு சிக்கலைத் திறக்கவும்.

ஒரு சாலை வரைபடம் உள்ளதா?

திட்டமிடப்பட்ட அம்சங்களுக்கு GitHub சிக்கல்கள் மற்றும் விவாதங்களைச் சரிபார்க்கவும்.