44 lines
1.1 KiB
Dart
44 lines
1.1 KiB
Dart
import 'package:file_picker/file_picker.dart';
|
|
import 'package:flutter_common/utils/file_utils.dart';
|
|
import 'package:food_hub_app/config/app_config.dart';
|
|
import 'package:minio/io.dart';
|
|
import 'package:minio/minio.dart';
|
|
|
|
|
|
class MinIOHelper {
|
|
static final MinIOHelper _instance = MinIOHelper._internal();
|
|
|
|
factory MinIOHelper() => _instance;
|
|
|
|
final String ip = AppConfig.rustfsIp;
|
|
|
|
MinIOHelper._internal() {
|
|
_minio = Minio(
|
|
endPoint: AppConfig.rustfsIp,
|
|
port: AppConfig.rustfsPort,
|
|
accessKey: AppConfig.rustfsAccessKey,
|
|
secretKey: AppConfig.rustfsSecretKey,
|
|
useSSL: false,
|
|
);
|
|
}
|
|
|
|
late Minio _minio;
|
|
|
|
Future<String> uploadFile({
|
|
required PlatformFile file,
|
|
required String bucketName,
|
|
Function(double)? onProgress,
|
|
}) async {
|
|
try {
|
|
String hashName = await generateMD5HashName(file.path!);
|
|
String fileName = '$hashName${getFileExtension(file.name)}';
|
|
|
|
await _minio.fPutObject(bucketName, fileName, file.path!);
|
|
|
|
return fileName;
|
|
} catch (e) {
|
|
throw Exception('文件上传失败: $e');
|
|
}
|
|
}
|
|
}
|