dart_aliyun_oss 1.0.4 copy "dart_aliyun_oss: ^1.0.4" to clipboard
dart_aliyun_oss: ^1.0.4 copied to clipboard

Dart client SDK for Alibaba Cloud Object Storage Service (OSS). Supports file upload, download, multipart upload, signed URLs and more.

Alibaba Cloud OSS Dart SDK #

English | δΈ­ζ–‡

This is a Dart client SDK for Alibaba Cloud Object Storage Service (OSS), providing simple and easy-to-use APIs to access Alibaba Cloud OSS services.

Features #

  • File upload and download
  • Large file multipart upload
  • Upload and download progress monitoring
  • Multipart upload management operations (list, abort, etc.)
  • Support for both V1 and V4 signature algorithms

Installation #

dependencies:
  dart_aliyun_oss: ^1.0.1

Then run:

dart pub get

Usage Examples #

Initialization #

import 'package:dart_aliyun_oss/dart_aliyun_oss.dart';

// Initialize OSS client
final oss = OSSClient.init(
  OSSConfig(
    endpoint: 'your-endpoint.aliyuncs.com', // e.g. oss-cn-hangzhou.aliyuncs.com
    region: 'your-region', // e.g. cn-hangzhou
    accessKeyId: 'your-access-key-id',
    accessKeySecret: 'your-access-key-secret',
    bucketName: 'your-bucket-name',
  ),
);

Simple Upload #

Future<void> uploadFile() async {
  final file = File('path/to/your/file.txt');
  await oss.putObject(
    file,
    'example/file.txt', // OSS object key
    params: OSSRequestParams(
      onSendProgress: (int count, int total) {
        print('Upload progress: ${(count / total * 100).toStringAsFixed(2)}%');
      },
    ),
  );
}

Download File #

Future<void> downloadFile() async {
  final ossObjectKey = 'example/file.txt';
  final downloadPath = 'path/to/save/file.txt';

  final response = await oss.getObject(
    ossObjectKey,
    params: OSSRequestParams(
      onReceiveProgress: (int count, int total) {
        print('Download progress: ${(count / total * 100).toStringAsFixed(2)}%');
      },
    ),
  );

  final File downloadFile = File(downloadPath);
  await downloadFile.parent.create(recursive: true);
  await downloadFile.writeAsBytes(response.data);
}

Multipart Upload #

Future<void> multipartUpload() async {
  final file = File('path/to/large/file.mp4');
  final ossObjectKey = 'videos/large_file.mp4';

  final completeResponse = await oss.multipartUpload(
    file,
    ossObjectKey,
    params: OSSRequestParams(
      onSendProgress: (count, total) {
        print('Overall progress: ${(count / total * 100).toStringAsFixed(2)}%');
      },
    ),
  );

  print('Multipart upload completed successfully!');
}

Using Query Parameters #

// List parts of a multipart upload with query parameters
final response = await oss.listParts(
  'example/large_file.mp4',
  'your-upload-id',
  params: OSSRequestParams(
    queryParameters: {
      'max-parts': 100,
      'part-number-marker': 5,
    },
  ),
);

// Get object with specific version using query parameters
final response = await oss.getObject(
  'example/file.txt',
  params: OSSRequestParams(
    queryParameters: {
      'versionId': 'your-version-id',
    },
  ),
);

Generate Signed URL #

// Generate a signed URL with V1 signature algorithm
final String signedUrlV1 = oss.signedUrl(
  'example/test.txt',
  method: 'GET',
  expires: 3600, // URL expires in 1 hour
  isV1Signature: true,
);

// Generate a signed URL with V4 signature algorithm
final String signedUrlV4 = oss.signedUrl(
  'example/test.txt',
  method: 'GET',
  expires: 3600,
  isV1Signature: false,
);

More Examples #

For more examples, please refer to the example/example.dart file.

Notes #

  • Do not hardcode your AccessKey information in production code. It is recommended to use environment variables or other secure credential management methods.

  • When using multipart upload, if the upload process is interrupted, make sure to call the abortMultipartUpload method to clean up incomplete multipart uploads.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

2
likes
150
points
320
downloads

Publisher

unverified uploader

Weekly Downloads

Dart client SDK for Alibaba Cloud Object Storage Service (OSS). Supports file upload, download, multipart upload, signed URLs and more.

Repository (GitHub)
View/report issues

Topics

#storage #cloud #file #network #api

Documentation

API reference

License

MIT (license)

Dependencies

convert, crypto, dio

More

Packages that depend on dart_aliyun_oss