dio
dio copied to clipboard
How to POST zip file using application/octet-stream
I have issue to upload zip file: here my postman successfully return 200:
how to make request same like my postman in Dio.
Here my flutter code: `var directory = await getApplicationDocumentsDirectory(); final fp = File('${directory.path}/$basename.json.gz'); fp.writeAsBytesSync(compressedBody);
var fileUpload = await MultipartFile.fromFile(
fp.path,
filename: '$basename.json.gz',
contentType: MediaType.parse('application/json'),
);
try {
var result = await api.uploadData(
true,
fileUpload,
options: Options(
headers: <String, dynamic>{
'Content-Encoding': 'gzip',
},
),
);
return right(result);
} on DioError catch (e) {
if (e.response?.statusCode == 500) {
return left(const DataScoreFailure.internalServerError());
}
return left(const DataScoreFailure.unexpected());
} on Exception catch (e, s) {
logger.wtf('Unexpected error when uploadFile', e, s);
return left(DataScoreFailure.unexpected());
}`
and here my console log error :
I/flutter ( 6030): I/flutter ( 6030): ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── I/flutter ( 6030): │ DioError [DioErrorType.other]: Converting object to an encodable object failed: Instance of 'MultipartFile' I/flutter ( 6030): │ #0 _JsonStringifier.writeObject (dart:convert/json.dart:794:7) I/flutter ( 6030): │ #1 _JsonStringStringifier.printOn (dart:convert/json.dart:983:17) I/flutter ( 6030): │ #2 _JsonStringStringifier.stringify (dart:convert/json.dart:968:5) I/flutter ( 6030): │ #3 JsonEncoder.convert (dart:convert/json.dart:345:30) I/flutter ( 6030): │ #4 JsonCodec.encode (dart:convert/json.dart:231:45) I/flutter ( 6030): │ #5 DefaultTransformer.transformRequest (package:dio/src/transformer.dart:68:21) package:dio/src/transformer.dart:68 I/flutter ( 6030): │ #6 DioMixin._transformData (package:dio/src/dio_mixin.dart:720:39) package:dio/src/dio_mixin.dart:720 I/flutter ( 6030): │ #7 DioMixin._dispatchRequest (package:dio/src/dio_mixin.dart:641:26) package:dio/src/dio_mixin.dart:641 I/flutter ( 6030): │ #8 DioMixin.fetch.<anonymous closure> (package:dio/src/dio_mixin.dart:590:7) package:dio/src/dio_mixin.dart:590 I/flutter ( 6030): │ #9 DioMixin.fetch._requestInterceptorWrapper.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:dio/src/dio_mixin.dart:502:28) package:dio/src/dio_mixin.dart:502 I/flutter ( 6030): │ #10 DioMixin.checkIfNeedEnqueue (package:dio/src/dio_mixin.dart:818:22) package:dio/src/dio_mixin.dart:818 I/flutter ( 6030): │ #11 DioMixin.fetch._requestInterceptorWrapper.<anonymous closure>.<anonymous closure> (package:dio/src/dio_mixin.dart:500:22) package:dio/src/dio_mixin.dart:500 I/flutter ( 6030): │ #12 new Future.<anonymous closure> (dart:async/future.dart:252:37) I/flutter ( 6030): │ #13 _rootRun (dart:async/zone.dart:1418:47) I/flutter ( 6030): │ #14 _CustomZone.run (dart:async/zone.dart:1328:19) I/flutter ( 6030): │ #15 _CustomZone.runGuarded (dart:async/zone.dart:1236:7) I/flutter ( 6030): │ #16 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1276:23) I/flutter ( 6030): │ #17 _rootRun (dart:async/zone.dart:1426:13) I/flutter ( 6030): │ #18 _CustomZone.run (dart:async/zone.dart:1328:19) I/flutter ( 6030): │ #19 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1260:23) I/flutter ( 6030): │ #20 Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15) I/flutter ( 6030): │ #21 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:395:19) I/flutter ( 6030): │ #22 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:426:5) I/flutter ( 6030): │ #23 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12) I/flutter ( 6030): │ I/flutter ( 6030): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ I/flutter ( 6030): │ #0 LoggingInterceptor.onError package:koyal_shared/…/networking/logging_interceptor.dart:46 I/flutter ( 6030): │ #1 DioMixin.fetch._errorInterceptorWrapper.<anonymous closure>.<anonymous closure>.<anonymous closure> package:dio/src/dio_mixin.dart:559 I/flutter ( 6030): │ #2 DioMixin.checkIfNeedEnqueue package:dio/src/dio_mixin.dart:818 I/flutter ( 6030): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ I/flutter ( 6030): │ 21:21:24.663 (+0:01:44.445088) I/flutter ( 6030): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ I/flutter ( 6030): │ 👾 Unknown Dio Error I/flutter ( 6030): └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── I/flutter ( 6030): *** DioError ***:
error screenshot:
Has anyone done this before? could you share what step i'm mistaken/missing? i'm using dio + retrofit