fileSystem.upload
Streams the file at from to url, and resolves with the response whatever its status.
Utilisation
Choose a file and send it
import { Button, Text, VStack, fileSystem, mediaPicker, signal, task } from 'kuito';
export default function PhotoUpload() {
const progress = signal(0);
const selected = signal<string | null>(null);
const upload = task(
async () => {
if (!selected.value) {
const result = await mediaPicker.pick({
mediaTypes: ['images'],
maxWidth: 2048,
quality: 0.8,
});
if (result.canceled || !result.assets[0]) return;
selected.value = result.assets[0].uri;
}
progress.value = 0;
const result = await fileSystem.upload('https://example.com/photos', selected.value, {
onProgress: ({ bytes, total }) => {
progress.value = total ? bytes / total : 0;
},
});
if (result.status < 200 || result.status >= 300)
throw new Error(`Upload failed: ${result.status}`);
selected.value = null;
},
{ policy: 'drop' },
);
return (
<VStack padding={24} gap={12}>
<Button disabled={upload.running.value} onPress={() => void upload.run().catch(() => {})}>
{selected.value ? 'Retry upload' : 'Choose photo'}
</Button>
<Text>
{upload.running.value
? `${Math.round(progress.value * 100)}%`
: upload.error.value
? String(upload.error.value)
: ''}
</Text>
</VStack>
);
}Signatures
(url: string, from: string, options?: UploadOptions): FileTransfer<UploadResult>Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
url | string | Oui | — |
from | string | Oui | — |
options | UploadOptions | Non | — Par défaut: {} |
Retourne
Généré depuis les déclarations TypeScript publiques : signatures, props et valeurs par défaut viennent de la source vérifiée, les descriptions de sa JSDoc. Aucune valeur par défaut n'est inventée.