Pular para o conteúdo

Arquivos

arquivos.ts
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: createFile recebe um File (de um <input type="file"> ou de arrastar e soltar). Arquivos grandes vão em partes automaticamente; onProgress informa o andamento.
  • URLs: getFileView (exibir), getFileDownload (baixar com o nome original) e getFilePreview (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.
arquivo-servidor.ts
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.

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.