Flutter Azure Blob 存储访问插件azure_blob_flutter的使用

发布于 1周前 作者 eggper 来自 Flutter

Flutter Azure Blob 存储访问插件azure_blob_flutter的使用

azure_blob_flutter 插件为在 Flutter 应用程序中上传图像和从 Azure Blob 存储中删除 Blob 提供了一个便捷且简单的途径。它旨在与 Azure Blob 存储无缝协作,并简化与管理 Blob 相关的常见任务。

安装

要安装 azure_blob_flutter 包,请将以下内容添加到您的 pubspec.yaml 文件中:

dependencies:
  azure_blob_flutter: ^0.0.5

使用示例

以下是一个完整的示例,展示了如何使用 azure_blob_flutter 插件来上传和删除 Blob。

示例代码
import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:azure_blob_flutter/azure_blob_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _azureBlobFlutterPlugin = AzureBlobFlutter("blobBaseUrl",
      "", // 空字符串表示不使用视频容器名
      "audit"); // 图像容器名

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 异步方法用于初始化平台状态
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能失败,因此我们使用 try/catch 处理 PlatformException。
    // 我们还处理消息可能返回 null 的情况。
    try {
      // 上传图像
      platformVersion = await _azureBlobFlutterPlugin.uploadImage("path", "fileName",
          "sasTokenUrl", false) ?? 'Unknown platform version';

      // 删除 Blob
      platformVersion = await _azureBlobFlutterPlugin.delete("blobName",
          "sasTokenUrl", false) ?? 'Unknown platform version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    // 如果小部件从树中被移除,而异步平台消息仍在飞行中,则我们应该丢弃回复而不是调用 setState 更新我们的非存在外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Text('Running on: $_platformVersion\n'),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个使用 azure_blob_flutter 插件在 Flutter 应用中访问 Azure Blob 存储的示例代码。该插件允许你直接从 Flutter 应用中上传和下载文件到 Azure Blob 存储。

首先,确保你已经添加了 azure_blob_flutter 依赖到你的 pubspec.yaml 文件中:

dependencies:
  flutter:
    sdk: flutter
  azure_blob_flutter: ^x.y.z  # 请替换为最新版本号

然后运行 flutter pub get 来安装依赖。

接下来,你需要在 Azure 门户中创建一个存储账户,并生成一个 SAS(共享访问签名)令牌,用于授权访问 Blob 存储。

以下是一个示例代码,展示了如何使用 azure_blob_flutter 插件进行文件上传和下载:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final String storageAccountName = 'your-storage-account-name';
  final String containerName = 'your-container-name';
  final String sasToken = 'your-sas-token'; // 确保包含 '?' 符号前的部分

  AzureBlobClient? _blobClient;

  @override
  void initState() {
    super.initState();
    _blobClient = AzureBlobClient(
      accountName: storageAccountName,
      containerName: containerName,
      sasToken: sasToken,
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Azure Blob Storage Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  // 上传文件
                  var file = File('path/to/your/local/file.txt');
                  var blobName = 'uploaded-file.txt';
                  await _blobClient!.uploadFile(file, blobName);
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('File uploaded successfully')),
                  );
                },
                child: Text('Upload File'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () async {
                  // 下载文件
                  var blobName = 'uploaded-file.txt';
                  var localPath = 'path/to/save/downloaded/file.txt';
                  await _blobClient!.downloadFile(blobName, localPath);
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('File downloaded successfully')),
                  );
                },
                child: Text('Download File'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意事项:

  1. SAS Token:确保你的 SAS Token 是有效的,并且具有适当的权限(如读取、写入)。
  2. 文件路径:在上传和下载操作中,确保提供的文件路径是有效的。
  3. 错误处理:在实际应用中,添加错误处理逻辑以处理可能的异常情况,例如网络错误或文件读写错误。

这个示例代码展示了如何使用 azure_blob_flutter 插件进行基本的文件上传和下载操作。根据具体需求,你可以进一步扩展和自定义这些功能。

回到顶部