serverpod_cos

中文文档

Tencent COS helper for Serverpod (presigned URL generation).

Features

  • Read credentials from passwords.yaml, pass other config directly
  • session.cosSigner() for easy presigned URL generation
dependencies:
  serverpod_cos: ^0.1.5

Configuration

passwords.yaml (credentials only)

shared:
  tencentCosSecretId: '<TENCENT_SECRET_ID>'
  tencentCosSecretKey: '<TENCENT_SECRET_KEY>'

Code (non-sensitive config)

final signer = session.cosSigner(
  appConfig: CosAppConfig(
    bucket: 'my-bucket',
    region: 'ap-guangzhou',
    customDomain: 'https://my-cdn.example.com',
  ),
);

Official storage compatibility

This package uses presigned URLs + custom endpoints. For official CloudStorage API compatibility, use:

dependencies:
  serverpod_cloud_storage_cos: ^0.1.5

Usage

import 'package:serverpod/serverpod.dart';
import 'package:serverpod_cos/serverpod_cos.dart';

class MyEndpoint extends Endpoint {
  Future<String> createUploadUrl(Session session, String objectKey) async {
    final signer = session.cosSigner(
      appConfig: CosAppConfig(
        bucket: 'my-bucket',
        region: 'ap-guangzhou',
      ),
    );
    return signer.generatePresignedUrl(
      'PUT',
      objectKey,
      expires: 3600,
    );
  }
}

API Reference

CosAppConfig

Non-sensitive configuration:

CosAppConfig(
  bucket: 'my-bucket',           // Required
  region: 'ap-guangzhou',        // Required
  customDomain: 'https://cdn.example.com', // Optional
)

CosPasswordKeys

Customize credential keys:

CosPasswordKeys(
  secretId: 'mySecretIdKey',   // Default: tencentCosSecretId
  secretKey: 'mySecretKeyKey', // Default: tencentCosSecretKey
)

Maintenance

  • Versioning: SemVer
  • Feedback: issue / PR

Libraries

serverpod_cos