Tigris Object Operations

tigrisdata/skills/skills/tigris-object-operations

作者 tigrisdata668ea424758e无许可证2 个星标收录于 2026年10月8日更新于 2026年10月8日仓库2个月前更新

Use when working with objects in Tigris Storage - uploading, downloading, deleting, listing, getting metadata, or generating presigned URLs

AI 生成的概览

Tigris 对象存储操作参考:上传、下载、删除、列举、元数据与预签名 URL。

功能
该技能是一份仅含说明的参考文档,介绍如何使用 @tigrisdata/storage 包操作 Tigris Storage 中的对象。它记录了 put、get、remove、list、head 和 getPresignedUrl 函数,并配有代码示例、选项表和常见错误说明。它还涵盖通过客户端包在浏览器端上传,并提示可能需要先安装 Tigris CLI。
适用场景
当任务涉及在 Tigris Storage 中上传、下载、删除、列举或查看对象,或需要生成用于临时访问和客户端上传的预签名 URL 时使用。处理大文件分片上传、分页以及覆盖和可见性选项时也适用。
运行要求
需要 @tigrisdata/storage 包(浏览器上传还需其客户端入口),以及 Tigris CLI(@tigrisdata/cli),技能说明中要求在不可用时通过 npm 安装。存储操作隐含需要网络访问和 Tigris 凭据。该技能不附带脚本,仅包含说明和代码示例。

Tigris Object Operations

Prerequisites

Before doing anything else, install the Tigris CLI if it's not already available:

bash
tigris help || npm install -g @tigrisdata/cli

If you need to install it, tell the user: "I'm installing the Tigris CLI (@tigrisdata/cli) so we can work with Tigris object storage."

Overview

Tigris Storage provides object operations: upload (put), download (get), delete (remove), list, metadata (head), and presigned URLs.

All methods return TigrisStorageResponse<T, E> - check error property first.

Quick Reference

OperationFunctionKey Parameters
Uploadput(path, body, options)path, body, access, contentType
Downloadget(path, format, options)path, format (string/file/stream)
Deleteremove(path, options)path
Listlist(options)prefix, limit, paginationToken
Metadatahead(path, options)path
Presigned URLgetPresignedUrl(path, options)path, operation (get/put)

Upload (put)

typescript
import { put } from "@tigrisdata/storage";
// Simple uploadconst result = await put("simple.txt", "Hello, World!");if (result.error) {  console.error("Error:", result.error);} else {  console.log("Uploaded:", result.data?.url);}
// Large file with progressconst result = await put("large.mp4", fileStream, {  multipart: true,  onUploadProgress: ({ loaded, total, percentage }) => {    console.log(`${loaded}/${total} bytes (${percentage}%)`);  },});
// Prevent overwriteconst result = await put("config.json", config, {  allowOverwrite: false,});

Put Options

OptionValuesDefaultPurpose
accesspublic/private-Object visibility
addRandomSuffixbooleanfalseAvoid naming collisions
allowOverwritebooleantrueAllow replacing existing
contentTypestringinferredMIME type
contentDispositioninline/attachmentinlineDownload behavior
multipartbooleanfalseEnable for large files
onUploadProgresscallback-Track upload progress

Download (get)

typescript
import { get } from "@tigrisdata/storage";
// Get as stringconst result = await get("object.txt", "string");if (result.error) {  console.error("Error:", result.error);} else {  console.log("Content:", result.data);}
// Get as file (triggers download in browser)const result = await get("object.pdf", "file", {  contentDisposition: "attachment",});
// Get as streamconst result = await get("video.mp4", "stream");const reader = result.data?.getReader();// Process stream...

Get Options

OptionValuesDefaultPurpose
contentDispositioninline/attachmentinlineDownload behavior
contentTypestringfrom uploadMIME type
encodingstringutf-8Text encoding
snapshotVersionstring-Read from snapshot

Delete (remove)

typescript
import { remove } from "@tigrisdata/storage";
const result = await remove("object.txt");if (result.error) {  console.error("Error:", result.error);} else {  console.log("Deleted successfully");}

List Objects

typescript
import { list } from "@tigrisdata/storage";
// List all objectsconst result = await list();console.log("Objects:", result.data?.items);
// List with prefix (folders)const result = await list({ prefix: "images/" });
// List with paginationconst allFiles = [];let currentPage = await list({ limit: 10 });allFiles.push(...currentPage.data?.items);
while (currentPage.data?.hasMore) {  currentPage = await list({    limit: 10,    paginationToken: currentPage.data?.paginationToken,  });  allFiles.push(...currentPage.data?.items);}

List Options

OptionPurpose
prefixFilter keys starting with prefix
delimiterGroup keys (e.g., '/' for folders)
limitMax objects to return (default: 100)
paginationTokenContinue from previous list
snapshotVersionList from snapshot

Object Metadata (head)

typescript
import { head } from "@tigrisdata/storage";
const result = await head("object.txt");if (result.error) {  console.error("Error:", result.error);} else {  console.log("Metadata:", result.data);  // { path, size, contentType, modified, url, contentDisposition }}

Presigned URLs

typescript
import { getPresignedUrl } from "@tigrisdata/storage";
// Presigned URL for GET (temporary access)const result = await getPresignedUrl("object.txt", {  operation: "get",  expiresIn: 3600, // 1 hour});console.log("URL:", result.data?.url);
// Presigned URL for PUT (allow client upload)const result = await getPresignedUrl("upload.txt", {  operation: "put",  expiresIn: 600, // 10 minutes});

Presigned URL Options

OptionValuesDefaultPurpose
operationget/put-URL purpose
expiresInseconds3600URL expiration
contentTypestring-Require for PUT

Common Mistakes

MistakeFix
Not checking error firstAlways check if (result.error) before result.data
Wrong format in get()Use 'string', 'file', or 'stream'
Forgetting multipart: trueEnable for files >100MB
Ignoring paginationUse hasMore and paginationToken

Client-Side Uploads

For browser uploads, use the client package to upload directly to Tigris:

typescript
import { upload } from "@tigrisdata/storage/client";
const result = await upload(file.name, file, {  url: "/api/upload", // Your backend endpoint  onUploadProgress: ({ percentage }) => {    console.log(`${percentage}%`);  },});

For initial setup, see file-storage.

来源与署名

来源:tigrisdata/skills位于skills/tigris-object-operations提交668ea42

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架