Flutter文件上传至OSS插件upload_file_oss的使用
Flutter文件上传至OSS插件upload_file_oss的使用
一个简单上传文件到阿里云对象存储OSS的库。仅支持小文件上传。
安装
引入文件:
import 'package:upload_file_oss/upload_file_oss.dart';
使用
详细见 example/lib/main.dart
final UploadFileOSSClient client = UploadFileOSSClient(
UploadFileOSSConfig(
accessKeyId: '', // 替换为你的阿里云OSS访问密钥ID
accessKeySecret: '', // 替换为你的阿里云OSS访问密钥Secret
endpoint: 'oss-cn-hangzhou.aliyuncs.com', // 替换为你的OSS服务端点
bucket: '', // 替换为你的OSS存储桶名称
fileDomain: '', // 替换为你的OSS文件域名
),
);
/// 本地文件路径
final String localFilePath = '/Users/xx.png'; // 替换为你要上传的本地文件路径
/// Object 存在OSS上的文件路径
final String savePath = 'avatar/me.jpg'; // 替换为你希望保存在OSS上的文件路径
/// 读取本地的文件,并转换为Uint8List
final File file = File(localFilePath);
final Uint8List fileContent = await file.readAsBytes();
/// 执行上传到 OSS
Map res = await client.putObject(
savePath,
fileContent,
overwrite: false, // 设置是否覆盖已存在的同名文件
);
print(res);
上传返回
上传成功返回:
{
"statusCode": 200,
"size": 3506,
"downloadUrl": "https://yourbucket.oss-cn-hangzhou.aliyuncs.com/avatar/me.jpg",
"url": "https://yourfiledomain/avatar/me.jpg",
}
上传失败返回:
{
"statusCode": 4xx,
"size": 0,
"downloadUrl": "",
"url": "",
}
更多关于Flutter文件上传至OSS插件upload_file_oss的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter文件上传至OSS插件upload_file_oss的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用upload_file_oss
插件将文件上传到阿里云OSS(对象存储服务)的一个基本示例。请注意,为了保持代码的专业性和完整性,我会包括必要的依赖项配置、插件初始化以及文件上传的代码示例。
1. 添加依赖项
首先,在你的Flutter项目的pubspec.yaml
文件中添加upload_file_oss
依赖项:
dependencies:
flutter:
sdk: flutter
upload_file_oss: ^latest_version # 请替换为最新版本号
2. 导入插件
在你的Dart文件中(例如main.dart
),导入upload_file_oss
插件:
import 'package:upload_file_oss/upload_file_oss.dart';
3. 配置阿里云OSS信息
在你的应用中配置阿里云OSS的相关信息,包括Endpoint、AccessKeyId、AccessKeySecret、BucketName和Region。这些信息通常可以在阿里云OSS控制台中找到。
4. 初始化OSS客户端并上传文件
以下是一个完整的示例,展示如何初始化OSS客户端并上传文件:
import 'package:flutter/material.dart';
import 'package:upload_file_oss/upload_file_oss.dart';
import 'dart:io';
import 'dart:typed_data';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter OSS Upload Example'),
),
body: Center(
child: UploadButton(),
),
),
);
}
}
class UploadButton extends StatefulWidget {
@override
_UploadButtonState createState() => _UploadButtonState();
}
class _UploadButtonState extends State<UploadButton> {
final String endpoint = 'your-oss-endpoint'; // 替换为你的OSS Endpoint
final String accessKeyId = 'your-access-key-id'; // 替换为你的AccessKeyId
final String accessKeySecret = 'your-access-key-secret'; // 替换为你的AccessKeySecret
final String bucketName = 'your-bucket-name'; // 替换为你的BucketName
final String region = 'your-region'; // 替换为你的Region
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () async {
// 选择文件
FilePickerResult result = await FilePicker.platform.pickFiles();
if (result != null && result.files.isNotEmpty) {
File file = File(result.files.first.path!);
Uint8List fileBytes = await file.readAsBytes();
// 初始化OSS客户端
OSS ossClient = await OSS.init(
endpoint: endpoint,
accessKeyId: accessKeyId,
accessKeySecret: accessKeySecret,
bucketName: bucketName,
region: region,
);
// 上传文件
try {
String objectName = 'your-directory/${file.basename}'; // 设置上传后的文件名和路径
await ossClient.putObject(objectName, fileBytes);
print('File uploaded successfully: $objectName');
} catch (e) {
print('Failed to upload file: $e');
}
}
},
child: Text('Upload File'),
);
}
}
注意事项
- 依赖项版本:确保你使用的是
upload_file_oss
插件的最新版本。 - 安全性:不要在客户端代码中硬编码AccessKeyId和AccessKeySecret。考虑使用STS(安全令牌服务)或其他安全机制来获取临时访问凭证。
- 文件选择:上面的示例使用了
file_picker
插件来选择文件,你需要确保已经添加了该插件的依赖。 - 错误处理:在生产环境中,应该添加更详细的错误处理和用户反馈机制。
希望这个示例能帮助你在Flutter应用中成功实现文件上传到阿里云OSS的功能。