Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when uploading image using MultipartFile.fromBytes in version 5.4.3+1 #2259

Closed
KimiyaZargari opened this issue Jun 27, 2024 · 1 comment
Labels
i: duplicate This issue or pull request already exists

Comments

@KimiyaZargari
Copy link

KimiyaZargari commented Jun 27, 2024

Package

dio

Version

5.4.3+1

Operating-System

Android, iOS, Web

Adapter

Default Dio

Output of flutter doctor -v

[√] Flutter (Channel stable, 3.22.0, on Microsoft Windows [Version 10.0.22631.3737], locale en-US)
    • Flutter version 3.22.0 on channel stable at C:\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5dcb86f68f (7 weeks ago), 2024-05-09 07:39:20 -0500
    • Engine revision f6344b75dc
    • Dart version 3.4.0
    • DevTools version 2.34.3

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\kimiy\AppData\Local\Android\sdk
    • Platform android-34, build-tools 31.0.0
    • ANDROID_HOME = C:\Users\kimiy\AppData\Local\Android\sdk
    • ANDROID_SDK_ROOT = C:\Users\kimiy\AppData\Local\Android\sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Build Tools 2019 16.11.33)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    • Visual Studio Build Tools 2019 version 16.11.34407.143
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 2023.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)

[√] VS Code (version 1.85.1)
    • VS Code at C:\Users\kimiy\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.90.0

[√] Connected device (4 available)
    • SM A525F (mobile) • RZ8T50QMFDJ • android-arm64  • Android 13 (API 33)
    • Windows (desktop) • windows     • windows-x64    • Microsoft Windows [Version 10.0.22631.3737]
    • Chrome (web)      • chrome      • web-javascript • Google Chrome 125.0.6422.142
    • Edge (web)        • edge        • web-javascript • Microsoft Edge 126.0.2592.68

[√] Network resources
    • All expected network resources are available.

• No issues found!

Dart Version

3.4.0

Steps to Reproduce

  1. Use Dio version 5.4.3+1. (it works fine on version 5.4.1)
  2. Attempt to upload an image using a MultipartFile.fromBytes in a POST request.
  3. The error mentioned below is thrown.

Code Snippet:

Here is the relevant part of my code:

Future<Either<HttpServiceError, EventModel>> createEvent(
  CreateEventModel eventModel,
) async {
  final json = eventModel.toJson()
    ..removeWhere((key, value) => value == null);
  final FormData formData = FormData.fromMap(
    json,
  );
  try {
    formData.files.addAll(
      [
        MapEntry(
          'photo',
          MultipartFile.fromBytes(
            eventModel.photo!,
            filename: eventModel.imageName,
          ),
        ),
      ],
    );

    return right((await _restClient.createEvent(formData)).data);
  } on DioException catch (e) {
    return left(mapHttpExceptionToError(e));
  }
}

Data Model:

@freezed
class CreateEventModel with _$CreateEventModel {
  const factory CreateEventModel({
    required String title,
    required String description,
    required String longitude,
    required String latitude,
    required String? address,
    required double price,
    @JsonKey(includeToJson: false, includeFromJson: false) List<int>? photo,
    @JsonKey(includeToJson: false, includeFromJson: false) String? imageName,
  }) = _CreateEventModel;

  factory CreateEventModel.fromJson(Map<String, dynamic> json) =>
      _$CreateEventModelFromJson(json);
}

Expected Result

The image should be uploaded successfully without throwing any exceptions as it does in version 5.4.1

Actual Result

An exception is thrown: type 'EqualUnmodifiableListView' is not a subtype of type 'Uint8List' of 'value'.

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'EqualUnmodifiableListView' is not a subtype of type 'Uint8List' of 'value'
E/flutter ( 4581): #0 _StreamController.add (dart:async/stream_controller.dart:604:14)
E/flutter ( 4581): #1 _RootZone.runUnaryGuarded (dart:async/zone.dart:1594:10)
E/flutter ( 4581): #2 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:365:11)
E/flutter ( 4581): #3 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:297:7)
E/flutter ( 4581): #4 _MultiStreamController.addSync (dart:async/stream_impl.dart:1127:36)
E/flutter ( 4581): #5 new Stream.fromIterable..next (dart:async/stream.dart:375:26)
E/flutter ( 4581): #6 _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
E/flutter ( 4581): #7 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
E/flutter ( 4581):

@KimiyaZargari KimiyaZargari added h: need triage This issue needs to be categorized s: bug Something isn't working labels Jun 27, 2024
@KimiyaZargari KimiyaZargari changed the title Error when uploading image using multipart file in version 5.4.3+1 Error when uploading image using MultipartFile.fromBytes in version 5.4.3+1 Jun 27, 2024
@AlexV525
Copy link
Member

Duplicate of #2236. Once we release v5.4.0 this should be fixed, before that you can apply those changes locally.

@AlexV525 AlexV525 closed this as not planned Won't fix, can't repro, duplicate, stale Jun 27, 2024
@AlexV525 AlexV525 added i: duplicate This issue or pull request already exists and removed h: need triage This issue needs to be categorized s: bug Something isn't working labels Jun 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
i: duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

2 participants