Flutter阿里云OSS存储插件flutter_aliyun_oss的使用

Flutter阿里云OSS存储插件flutter_aliyun_oss的使用

flutter_aliyun_oss 插件用于在 Flutter 应用中上传文件到阿里云对象存储(OSS)。

压缩需求

当前版本已经移除了图片压缩和宽高获取功能。如果需要对视频或图片进行压缩,可以使用 media_asset_utils 包。

  • ✅ 视频硬编码压缩以及图片仿微信 Luban 压缩
  • ✅ 视频缩略图获取
  • ✅ 视频和图片的 width、height、orientation 等信息获取
  • ✅ 保存到相册,支持 Android Q+

示例代码

import 'package:flutter/material.dart';
import 'package:flutter_aliyun_oss/flutter_aliyun_oss.dart';

void main() {
  // 初始化OSSClient
  OSSClient.init(
    endpoint: 'oss-cn-hangzhou.aliyuncs.com', // OSS服务地址
    bucket: 'your_bucket_name', // OSS Bucket 名称
    credentials: () {
      // 返回未来凭证
      return Credentials.fromJson(response.data);
      // 或者配置凭证
      return Credentials(
        accessKeyId: 'your_access_key_id', // Access Key ID
        accessKeySecret: 'your_access_key_secret', // Access Key Secret
      );
    },
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('OSS Upload Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: uploadFile,
            child: Text('Upload File'),
          ),
        ),
      ),
    );
  }

  Future<void> uploadFile() async {
    try {
      // 创建一个OSSObject实例
      OSSObject object = OSSObject(
        bucket: 'your_bucket_name', // OSS Bucket 名称
        endpoint: 'oss-cn-hangzhou.aliyuncs.com', // OSS服务地址
        path: 'path/to/your/file.txt', // 文件路径
      );

      // 上传文件到OSS
      final result = await OSSClient.shared.putObject(object);

      print('File uploaded successfully: $result');
    } catch (e) {
      print('Error uploading file: $e');
    }
  }
}

更多关于Flutter阿里云OSS存储插件flutter_aliyun_oss的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter阿里云OSS存储插件flutter_aliyun_oss的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_aliyun_oss 是一个用于在 Flutter 应用中集成阿里云对象存储(OSS)的插件。使用该插件,你可以方便地上传、下载、删除和管理阿里云 OSS 中的文件。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 flutter_aliyun_oss 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_aliyun_oss: ^版本号

然后运行 flutter pub get 来安装插件。

初始化插件

在使用插件之前,你需要进行初始化。通常,你需要在 main.dart 或其他合适的地方进行初始化:

import 'package:flutter_aliyun_oss/flutter_aliyun_oss.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化阿里云OSS
  await FlutterAliyunOss.init(
    endpoint: 'your-oss-endpoint', // 你的OSS endpoint
    bucketName: 'your-bucket-name', // 你的Bucket名称
    stsToken: 'your-sts-token', // STS Token
    accessKeyId: 'your-access-key-id', // AccessKey ID
    accessKeySecret: 'your-access-key-secret', // AccessKey Secret
    securityToken: 'your-security-token', // Security Token
  );
  
  runApp(MyApp());
}

上传文件

你可以使用 upload 方法来上传文件到阿里云 OSS:

import 'package:flutter_aliyun_oss/flutter_aliyun_oss.dart';

Future<void> uploadFile() async {
  try {
    final response = await FlutterAliyunOss.upload(
      filePath: 'path/to/your/file', // 本地文件路径
      objectKey: 'your-object-key', // OSS中的对象键
    );
    print('File uploaded: ${response.url}');
  } catch (e) {
    print('Error uploading file: $e');
  }
}

下载文件

你可以使用 download 方法来从阿里云 OSS 下载文件:

import 'package:flutter_aliyun_oss/flutter_aliyun_oss.dart';

Future<void> downloadFile() async {
  try {
    final response = await FlutterAliyunOss.download(
      objectKey: 'your-object-key', // OSS中的对象键
      savePath: 'path/to/save/file', // 保存文件的本地路径
    );
    print('File downloaded: ${response.filePath}');
  } catch (e) {
    print('Error downloading file: $e');
  }
}

删除文件

你可以使用 delete 方法来删除阿里云 OSS 中的文件:

import 'package:flutter_aliyun_oss/flutter_aliyun_oss.dart';

Future<void> deleteFile() async {
  try {
    await FlutterAliyunOss.delete(
      objectKey: 'your-object-key', // OSS中的对象键
    );
    print('File deleted');
  } catch (e) {
    print('Error deleting file: $e');
  }
}
回到顶部