@@ -5,6 +5,7 @@ import 'dart:math';
55
66import 'package:crypto/crypto.dart' ;
77import 'package:dio/dio.dart' ;
8+ import 'package:flutter/material.dart' ;
89import 'package:path/path.dart' ;
910
1011class ChunkedUploader {
@@ -34,6 +35,10 @@ class ChunkedUploader {
3435 maxChunkSize: maxChunkSize,
3536 onUploadProgress: onUploadProgress)
3637 .upload ();
38+
39+ static Future <String > generateMd5 (Stream <List <int >> stream) async {
40+ return (await md5.bind (stream).first).toString ();
41+ }
3742}
3843
3944class UploadRequest {
@@ -69,13 +74,13 @@ class UploadRequest {
6974 Response ? finalResponse;
7075 String originalSum;
7176 List <String > chunkSums = [];
72- originalSum = await generateMd5 (_file.openRead ());
73-
77+ originalSum = await ChunkedUploader . generateMd5 (_file.openRead ());
78+ debugPrint ( "$ originalSum " );
7479 for (int i = 0 ; i < _chunksCount; i++ ) {
7580 final start = _getChunkStart (i);
7681 final end = _getChunkEnd (i);
7782 final chunkStream = _getChunkStream (start, end);
78- chunkSums.add (await generateMd5 (chunkStream));
83+ chunkSums.add (await ChunkedUploader . generateMd5 (chunkStream));
7984 }
8085
8186 for (int i = 0 ; i < _chunksCount; i++ ) {
@@ -92,18 +97,25 @@ class UploadRequest {
9297 ...data
9398 });
9499
100+ print ("${formData .fields }" );
101+
95102 Response response = await dio.request (
96103 path,
97104 data: formData,
98105 queryParameters: params,
99106 cancelToken: cancelToken,
100- options: Options (method: method, contentType: contentType),
107+ options: Options (
108+ method: method,
109+ contentType: contentType,
110+ headers: _getHeaders (start, end),
111+ ),
101112 onSendProgress: (current, total) => _updateProgress (i, current, total),
102113 );
103114
104115 if (response.data != null && json.decode (response.data)? ['result' ]? ['id' ] != null ) {
105116 finalResponse = response;
106117 }
118+ debugPrint ("[$i ] $response " );
107119 }
108120 return finalResponse;
109121 }
@@ -123,8 +135,4 @@ class UploadRequest {
123135 Map <String , dynamic > _getHeaders (int start, int end) => {'Content-Range' : 'bytes $start -${end - 1 }/$_fileSize ' };
124136
125137 int get _chunksCount => (_fileSize / _maxChunkSize).ceil ();
126-
127- Future <String > generateMd5 (Stream <List <int >> stream) async {
128- return (await md5.bind (stream).first).toString ();
129- }
130138}
0 commit comments