Commit 579eafcc by tanghuan

测试

1 parent 60c0f661
......@@ -6,12 +6,12 @@ import 'package:appframe/services/dispatcher.dart';
import 'package:appframe/utils/file_type_util.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:logger/logger.dart';
// import 'package:logger/logger.dart';
import 'package:path/path.dart' as path;
import 'package:uuid/uuid.dart';
class UploadFile2Handler extends MessageHandler {
static final upLogger = Logger(level: Level.debug);
// static final upLogger = Logger(level: Level.debug);
@override
Future handleMessage(params) async {
......@@ -34,14 +34,17 @@ class UploadFile2Handler extends MessageHandler {
}
final startTime = DateTime.now();
upLogger.d('开始上传文件,$startTime');
// upLogger.d('开始上传文件,$startTime');
print('====================>开始上传文件,$startTime');
// final result = await compute(_handleUpload, {'filePath': tempFilePath, 'busi': busi, 'subBusi': subBusi});
final result = await _handleUpload(tempFilePath, busi, subBusi);
final endTime = DateTime.now();
upLogger.d('完成上传文件,$endTime');
upLogger.d('上传完成,耗时:${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒');
// upLogger.d('完成上传文件,$endTime');
print('====================>完成上传文件,$endTime');
// upLogger.d('上传完成,耗时:${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒');
print('====================>上传完成,耗时:${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒');
result['startTimestamp'] = startTime.toString();
result['endTimestamp'] = endTime.toString();
......@@ -77,11 +80,13 @@ class UploadFile2Handler extends MessageHandler {
//并行上传分段
var startTime = DateTime.now();
upLogger.d("开始异步处理 $startTime");
// upLogger.d("开始异步处理 $startTime");
print('====================>开始异步处理 $startTime');
final uploadResult =
await _uploadInParallel(bxeApiService, obsApiService, logicPrefix, filePath, maxConcurrency: 30);
var endTime = DateTime.now();
upLogger.d("完成异步处理 $endTime ,耗时 ${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒");
// upLogger.d("完成异步处理 $endTime ,耗时 ${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒");
print('====================>完成异步处理 $endTime ,耗时 ${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒');
// 上传结果
String objectKey = uploadResult['objectKey'] as String;
......@@ -91,10 +96,12 @@ class UploadFile2Handler extends MessageHandler {
//请求合并文件
var startTime2 = DateTime.now();
upLogger.d("开始处理合并文件 $startTime2");
// upLogger.d("开始处理合并文件 $startTime2");
print('====================>开始处理合并文件 $startTime2');
String location = await _merge(bxeApiService, objectKey, bucket, uploadId, tagsMap);
var endTime2 = DateTime.now();
upLogger.d("合并文件完成 $endTime2 ,耗时 ${endTime2.millisecondsSinceEpoch - startTime2.millisecondsSinceEpoch} 毫秒 ");
// upLogger.d("合并文件完成 $endTime2 ,耗时 ${endTime2.millisecondsSinceEpoch - startTime2.millisecondsSinceEpoch} 毫秒 ");
print('====================>合并文件完成 $endTime2 ,耗时 ${endTime2.millisecondsSinceEpoch - startTime2.millisecondsSinceEpoch} 毫秒 ');
//关闭Dio
bxeApiService.close();
......@@ -122,15 +129,18 @@ class UploadFile2Handler extends MessageHandler {
throw Exception('上传的文件过大');
}
upLogger.d('文件大小:$fileSize');
// upLogger.d('文件大小:$fileSize');
print('====================>文件大小:$fileSize');
//分段大小2M
final chunkSize = Constant.obsUploadChunkSize;
upLogger.d('分段大小:$chunkSize');
// upLogger.d('分段大小:$chunkSize');
print('====================>分段大小:$chunkSize');
//分段总数
final totalChunks = (fileSize / chunkSize).ceil();
upLogger.d('分段总数:$totalChunks');
// upLogger.d('分段总数:$totalChunks');
print('====================>分段总数:$totalChunks');
final randomAccessFile = file.openSync();
......@@ -153,13 +163,16 @@ class UploadFile2Handler extends MessageHandler {
final futures = <Future>[];
for (int i = 0; i < totalChunks; i++) {
upLogger.d('开始处理分段:$i');
// upLogger.d('开始处理分段:$i');
print('====================>开始处理分段:$i');
// 控制并发数量
if (futures.length >= maxConcurrency) {
upLogger.d('超过最大并发数量,等待');
// upLogger.d('超过最大并发数量,等待');
print('====================>超过最大并发数量,等待');
var resultList = await Future.wait(futures);
upLogger.d('等待完成');
// upLogger.d('等待完成');
print('====================>等待完成');
for (var result in resultList) {
if (result is Map<String, dynamic>) {
......@@ -188,7 +201,8 @@ class UploadFile2Handler extends MessageHandler {
chunkSignUrl = nextResult['signed_url'] as String;
}
final endTime = DateTime.now().millisecondsSinceEpoch;
upLogger.d('分段$i,签名耗时:${endTime - startTime} 毫秒');
// upLogger.d('分段$i,签名耗时:${endTime - startTime} 毫秒');
print('====================>分段$i,签名耗时:${endTime - startTime} 毫秒');
// await _uploadChunkWithRetry(obsApiService, chunkSignUrl, i, chunk, tagsMap);
// final future = _uploadChunkWithRetry(obsApiService, chunkSignUrl, i, chunk, tagsMap);
......@@ -249,10 +263,12 @@ class UploadFile2Handler extends MessageHandler {
var maxRetries = 30;
final start = DateTime.now();
upLogger.d('new Isolate--- 分段$chunkIndex,开始时间:$start');
// upLogger.d('new Isolate--- 分段$chunkIndex,开始时间:$start');
print('====================>new Isolate--- 分段$chunkIndex,开始时间:$start');
for (int attempt = 0; attempt <= maxRetries; attempt++) {
upLogger.d('new Isolate--- 分段$chunkIndex,第 ${attempt + 1} 次,开始时间:${DateTime.now()}');
// upLogger.d('new Isolate--- 分段$chunkIndex,第 ${attempt + 1} 次,开始时间:${DateTime.now()}');
print('====================>new Isolate--- 分段$chunkIndex,第 ${attempt + 1} 次,开始时间:${DateTime.now()}');
try {
final obsApiService = ApiService(defaultHeaders: {'Content-Type': '', 'Accept': ''});
final resp = await _uploadChunk(obsApiService, signUrl, chunk, chunkIndex);
......@@ -260,8 +276,9 @@ class UploadFile2Handler extends MessageHandler {
final etags = resp.headers['etag'] as List<String>;
// tagsMap[chunkIndex + 1] = etags[0];
final end = DateTime.now();
upLogger.d(
'new Isolate--- 分段$chunkIndex,完成时间: $end,上传段耗时:${end.millisecondsSinceEpoch - start.millisecondsSinceEpoch}毫秒');
// upLogger.d(
// 'new Isolate--- 分段$chunkIndex,完成时间: $end,上传段耗时:${end.millisecondsSinceEpoch - start.millisecondsSinceEpoch}毫秒');
print('====================>new Isolate--- 分段$chunkIndex,完成时间: $end,上传段耗时:${end.millisecondsSinceEpoch - start.millisecondsSinceEpoch}毫秒');
return Future.value({'idx': chunkIndex + 1, 'etag': etags[0]}); // 上传成功
} else {
throw Exception('Chunk $chunkIndex upload failed: ${resp.statusCode}');
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!