Arquivos
No navegador
Seção intitulada “No navegador”import { ID, ImageFormat, Permission, Role, Storage } from '@owbase/web';import { client } from './client';
const storage = new Storage(client);const input = document.querySelector<HTMLInputElement>('#foto')!;
// Envio (arquivos grandes vão em partes; onProgress mostra o andamento).const arquivo = await storage.createFile({ bucketId: 'fotos', fileId: ID.unique(), file: input.files![0], permissions: [Permission.read(Role.any())], onProgress: (p) => console.log(`${Math.round(p.progress)}%`),});
// URLs prontas para <img>, <a download> etc. (não fazem pedido: só montam o endereço).const ver = storage.getFileView({ bucketId: 'fotos', fileId: arquivo.$id });const baixar = storage.getFileDownload({ bucketId: 'fotos', fileId: arquivo.$id });const miniatura = storage.getFilePreview({ bucketId: 'fotos', fileId: arquivo.$id, width: 320, height: 320, output: ImageFormat.Webp });console.log(ver, baixar, miniatura);- Envio:
createFilerecebe umFile(de um<input type="file">ou de arrastar e soltar). Arquivos grandes vão em partes automaticamente;onProgressinforma o andamento. - URLs:
getFileView(exibir),getFileDownload(baixar com o nome original) egetFilePreview(miniatura de imagem: largura, altura, qualidade, formato, bordas) só montam o endereço. Arquivo com leitura pública (Role.any()) abre em qualquer lugar; para mandar um arquivo privado a alguém de fora, use um link de compartilhamento. - Pastas: o parâmetro
folder(por exemplo,fotos/2026) organiza os arquivos dentro do bucket.
No servidor
Seção intitulada “No servidor”import { ID, Storage } from '@owbase/node';import { InputFile } from '@owbase/node/file';import { client } from './client';
// A chave precisa do escopo files.write.const storage = new Storage(client);
const nota = await storage.createFile({ bucketId: 'notas', fileId: ID.unique(), file: InputFile.fromPath('./nota.pdf', 'nota.pdf') });console.log(nota.$id, nota.sizeOriginal);No @owbase/node, InputFile (de @owbase/node/file) lê do disco (fromPath), de um Buffer (fromBuffer) ou de texto (fromPlainText). Lá, getFileView e getFileDownload devolvem o conteúdo (ArrayBuffer), não a URL.
Limites
Seção intitulada “Limites”O tamanho máximo é o do bucket, até 30 MB por arquivo. Arquivo maior dá storage_invalid_file_size; extensão fora da lista dá storage_file_type_unsupported.