From 016b06be7faa5e25e4ebcaab33d5e8b730791905 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 22 Oct 2021 18:48:53 +0700 Subject: [PATCH] [BUG] Fix upload attachment --- lib/features/composer/data/network/composer_api.dart | 12 ++++++++++-- model/lib/upload/file_info.dart | 3 +++ model/pubspec.yaml | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/features/composer/data/network/composer_api.dart b/lib/features/composer/data/network/composer_api.dart index 131b17c1f..f83f0151e 100644 --- a/lib/features/composer/data/network/composer_api.dart +++ b/lib/features/composer/data/network/composer_api.dart @@ -1,7 +1,9 @@ +import 'dart:convert'; import 'dart:io'; import 'package:core/core.dart'; +import 'package:dio/dio.dart'; import 'package:model/model.dart'; class ComposerAPI { @@ -11,9 +13,15 @@ class ComposerAPI { ComposerAPI(this._dioClient); Future uploadAttachment(UploadRequest uploadRequest) async { + final file = File(uploadRequest.fileInfo.filePath); + final headerParam = _dioClient.getHeaders(); + headerParam[HttpHeaders.contentTypeHeader] = uploadRequest.fileInfo.mimeType; + headerParam[HttpHeaders.contentLengthHeader] = file.readAsBytesSync().length; + final resultJson = await _dioClient.post( Uri.decodeFull(uploadRequest.uploadUrl.toString()), - data: File(uploadRequest.fileInfo.filePath).readAsBytesSync()); - return UploadResponse.fromJson(resultJson); + options: Options(headers: headerParam), + data: file.openRead()); + return UploadResponse.fromJson(jsonDecode(resultJson)); } } \ No newline at end of file diff --git a/model/lib/upload/file_info.dart b/model/lib/upload/file_info.dart index 63c1274d0..69f7b7523 100644 --- a/model/lib/upload/file_info.dart +++ b/model/lib/upload/file_info.dart @@ -1,5 +1,6 @@ import 'package:equatable/equatable.dart'; +import 'package:mime/mime.dart'; class FileInfo with EquatableMixin { final String fileName; @@ -12,6 +13,8 @@ class FileInfo with EquatableMixin { return FileInfo('', '', 0); } + String get mimeType => lookupMimeType(filePath) ?? 'application/json; charset=UTF-8'; + @override List get props => [fileName, filePath, fileSize]; } \ No newline at end of file diff --git a/model/pubspec.yaml b/model/pubspec.yaml index cc88490a3..894c6c9c8 100644 --- a/model/pubspec.yaml +++ b/model/pubspec.yaml @@ -57,6 +57,9 @@ dependencies: # http_parser http_parser: 4.0.0 + # mime + mime: 1.0.1 + dev_dependencies: flutter_test: sdk: flutter