Utilização

Choose a file and send it

Este tipo é usado por fileSystem.upload

tsx
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>
  );
}

Declaração do tipo

ts
export type UploadOptions = {
  /** Defaults to `'POST'`. */
  method?: 'POST' | 'PUT' | 'PATCH';
  headers?: Record<string, string>;
  /** The file as the whole body, or as one field of a multipart form. Defaults to `'binary'`. */
  uploadType?: 'binary' | 'multipart';
  /** The form field holding the file. Defaults to `'file'`. */
  fieldName?: string;
  mimeType?: string;
  /** More form fields, sent before the file. */
  parameters?: Record<string, string>;
  onProgress?: (progress: TransferProgress) => void;
};

Membros 7

NomeTipoObrigatórioDescrição
method"POST" | "PUT" | "PATCH"NãoDefaults to 'POST'.
headersRecord<string, string>Não—
uploadType"binary" | "multipart"NãoThe file as the whole body, or as one field of a multipart form. Defaults to 'binary'.
fieldNamestringNãoThe form field holding the file. Defaults to 'file'.
mimeTypestringNão—
parametersRecord<string, string>NãoMore form fields, sent before the file.
onProgress(progress: TransferProgress) => voidNão—
onProgress — assinaturas de método

Assinaturas

ts
(progress: TransferProgress): void

Parâmetros

NomeTipoObrigatórioDescrição
progressTransferProgressSim—

Devolve

void

Gerado a partir das declarações TypeScript públicas: assinaturas, props e predefinições vêm da fonte verificada, as descrições da sua JSDoc. Nenhuma predefinição é inventada.