【问题标题】:How to upload File to API in Flutter WEB如何在 Flutter WEB 中上传文件到 API
【发布时间】:2021-11-19 14:37:45
【问题描述】:

我是 Flutter 新手,在将文件上传到 API 时遇到问题。我曾尝试使用 FormData 和 MultiPartFile 但它返回错误。 我也在这个视频中使用了代码,但它不起作用:

https://www.youtube.com/watch?v=c2tGUt7FLqY&t=318s

任何人都有解决方案。

【问题讨论】:

    标签: flutter api flutter-web form-data multipartfile


    【解决方案1】:

    好的,我找到了,留给遇到同样问题的人

    if (result != null) {    
      for (var file in result.files) {
        final formData = FormData.fromMap({
          ...someOtherData,
          'file': MultipartFile.fromBytes(file.bytes as List<int>)
        });
        
        dio.post(
          url,
          data: formData,
        );
      }
    }
    

    【讨论】:

      【解决方案2】:

      我想通了。我们不能使用“文件”,因为它使用了 Flutter WEB 不支持的“dart.io”库。所以我们必须使用“平台文件”,它使用了 Flutter WEB 支持的 'dart.html' 库。代码如下:

      addStudent(
            {@required token,
            @required name,
            @required email,
            @required password,
            @required rollNo,
            @required phoneNo,
            @required PlatformFile? image,
            @required gender}) async {
      
          http.MultipartRequest request = http.MultipartRequest(
            "POST",
            Uri.parse('Your URL HERE'),
          );
          request.headers['Authorization'] = 'Bearer $token';
      
          request.fields['name'] = name;
          request.fields['email'] = email;
          request.fields['password'] = password;
          request.fields['gender'] = gender;
          request.fields['rollno'] = rollNo;
          request.fields['phoneNumber'] = phoneNo;
      
      // Here is the code to upload image to API
      
          request.files.add(new http.MultipartFile(
              'image', image!.readStream!, image.size,
              filename: image.name));
      
          //-------Send request
          await request.send().then((value) async {
            //------Read response
            String result = await value.stream.bytesToString();
      
            //-------Your response
            print(result);
          });
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-17
        • 2021-12-25
        • 2022-07-27
        • 1970-01-01
        • 1970-01-01
        • 2020-07-07
        • 2021-12-15
        • 2020-11-28
        相关资源
        最近更新 更多