cloud-storage-web

from tencentcloudbase/skills

Production Ready Backend Development (CloudBase)Agent Skills

2 stars0 forksUpdated Jan 23, 2026
npx skills add https://github.com/tencentcloudbase/skills --skill cloud-storage-web

SKILL.md

Cloud Storage Web SDK

Use this skill when building web applications that need to upload, download, or manage files using CloudBase cloud storage via the @cloudbase/js-sdk (Web SDK).

When to use this skill

Use this skill for file storage operations in web applications when you need to:

  • Upload files from web browsers to CloudBase cloud storage
  • Generate temporary download URLs for stored files
  • Delete files from cloud storage
  • Download files from cloud storage to local browser

Do NOT use for:

  • Mini-program file operations (use mini-program specific skills)
  • Backend file operations (use Node SDK skills)
  • Database operations (use database skills)

How to use this skill (for a coding agent)

  1. Initialize CloudBase SDK

    • Ask the user for their CloudBase environment ID
    • Always use the standard initialization pattern shown below
  2. Choose the right storage method

    • uploadFile - For uploading files from browser to cloud storage
    • getTempFileURL - For generating temporary download links
    • deleteFile - For deleting files from storage
    • downloadFile - For downloading files to browser
  3. Handle CORS requirements

    • Remind users to add their domain to CloudBase console security domains
    • This prevents CORS errors during file operations
  4. Follow file path rules

    • Use valid characters: [0-9a-zA-Z], /, !, -, _, ., , *, Chinese characters
    • Use / for folder structure (e.g., folder/file.jpg)

SDK Initialization

import cloudbase from "@cloudbase/js-sdk";

const app = cloudbase.init({
  env: "your-env-id", // Replace with your CloudBase environment ID
});

Initialization rules:

  • Always use synchronous initialization with the pattern above
  • Do not lazy-load the SDK with dynamic imports
  • Keep a single shared app instance across your application

File Upload (uploadFile)

Basic Usage

const result = await app.uploadFile({
  cloudPath: "folder/filename.jpg", // File path in cloud storage
  filePath: fileInput.files[0],     // HTML file input element
});

// Result contains:
{
  fileID: "cloud://env-id/folder/filename.jpg", // Unique file identifier
  // ... other metadata
}

Advanced Upload with Progress

const result = await app.uploadFile({
  cloudPath: "uploads/avatar.jpg",
  filePath: selectedFile,
  method: "put", // "post" or "put" (default: "put")
  onUploadProgress: (progressEvent) => {
    const percent = Math.round(
      (progressEvent.loaded * 100) / progressEvent.total
    );
    console.log(`Upload progress: ${percent}%`);
    // Update UI progress bar here
  }
});

Parameters

ParameterTypeRequiredDescription
cloudPathstringYesAbsolute path with filename (e.g., "folder/file.jpg")
filePathFileYesHTML file input object
method"post" | "put"NoUpload method (default: "put")
onUploadProgressfunctionNoProgress callback function

Cloud Path Rules

  • Valid characters: [0-9a-zA-Z], /, !, -, _, ., , *, Chinese characters
  • Invalid characters: Other special characters
  • Structure: Use / to create folder hierarchy
  • Examples:
    • "avatar.jpg"
    • "uploads/avatar.jpg"
    • "user/123/avatar.jpg"

CORS Configuration

⚠️ IMPORTANT: To prevent CORS errors, add your domain to CloudBase console:

  1. Go to CloudBase Console → Environment → Security Sources → Security Domains
  2. Add your frontend domain (e.g., https://your-app.com, http://localhost:3000)
  3. If CORS errors occur, remove and re-add the domain

Temporary Download URLs (getTempFileURL)

Basic Usage

const result = await app.getTempFileURL({
  fileList: [
    {
      fileID: "cloud://env-id/folder/filename.jpg",
      maxAge: 3600 // URL valid for 1 hour (seconds)
    }
  ]
});

// Access the download URL
result.fileList.forEach(file => {
  if (file.code === "SUCCESS") {
    console.log("Download URL:", file.tempFileURL);
    // Use this URL to download or display the file
  }
});

Multiple Files

const result = await app.getTempFileURL({
  fileList: [
    {
      fileID: "cloud://env-id/image1.jpg",
      maxAge: 7200 // 2 hours
    },
    {
      fileID: "cloud://env-id/document.pdf",
      maxAge: 86400 // 24 hours
    }
  ]
});

Parameters

ParameterTypeRequiredDescription
fileListArrayYesArray of file objects

fileList Item Structure

ParameterTypeRequiredDescription
fileIDstringYesCloud storage file ID
maxAgenumberYesURL validity period in seconds

Response Structure

{
  code: "SUCCESS",
  fileList: [
    {
      code: "SUCCESS",
      fileID: "cloud://env-id/folder/file

...
Read full content

Repository Stats

Stars2
Forks0