【问题标题】:Converting an XFile type to a Multipart file in Flutter在 Flutter 中将 XFile 类型转换为 Multipart 文件
【发布时间】:2022-07-16 05:25:31
【问题描述】:

我有一个函数可以使用 REST API 使用 hhtp.post 方法将 2 个字符串和一个图像发送到服务器。使用图像选择器包从图库中选择图像。

Future<ApiResponse> post(String url, dynamic body) async {
logger.i('Api Post, url $_url$url');
logger.i('Api Post, data ${body.toString()}');
ApiResponse apiResponse;
try {
  final response =
      await http.post(Uri.parse(_url + url), body: body, headers: _headers);
  apiResponse = _returnResponse(response);
} on SocketException {
  logger.e('No net');
  throw FetchDataException('No Internet connection');
}
return apiResponse;
}

下面是我的仓库函数

Future<ApiResponse> sendBankSlip(BankSlipRequest bankSlipRequest) async {
final ApiResponse apiResponse = await restServiceProvider.post("/courses/create-payment", bankSlipRequest.toJson());
return apiResponse;

}

下面是我的 BankSlipRequest 文件,

import 'package:care_giver_app/models/api_request.dart';
import 'package:image_picker/image_picker.dart';

class BankSlipRequest extends ApiRequest{
  String courseId="";
  XFile? slip;
  String paidAmount="";

 BankSlipRequest({required this.courseId,required this.slip,required this.paidAmount});

BankSlipRequest.fromJson(Map<String, dynamic> json) {
  courseId = json['course_Id'];
  slip = json['proof_image'];
  paidAmount = json['paid_amount'];
 }

 Map<String, dynamic> toJson() => {
   "course_Id": courseId,
   "proof_image": slip,
   "paid_amount": paidAmount,
  };

现在图像是 XFile 格式,我想要将其转换为 multipart 文件。请帮我转换一下

【问题讨论】:

    标签: flutter http dart multipart imagepicker


    【解决方案1】:

    我回答有点晚了。您需要将 XFile 转换为字节并从后端读取字节。 以下是可能的解决方案之一:

    Future<Map<String, dynamic>> toJsonImage() async{
        return  {
          "course_Id": courseId,
          "proof_image": await slip!.readAsBytes(),
          "paid_amount": paidAmount,
        };
    
    
    Future<ApiResponse> sendBankSlip(BankSlipRequest bankSlipRequest) async {
      final ApiResponse apiResponse = await restServiceProvider.post(
          "/courses/create-payment", await bankSlipRequest.toJsonImage());
      return apiResponse;
    }
    

    如果您有任何错误,请告诉我。

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2020-09-12
      • 2022-08-18
      • 2021-12-31
      相关资源
      最近更新 更多