【问题标题】:Http status error 413 when using dio package使用dio包时出现Http状态错误413
【发布时间】:2021-12-30 17:25:15
【问题描述】:

当我在 Flutter 中使用 Dio 包时,我使用 FormData 在服务器上请求并使用 Token 进行身份验证。我收到一个错误:“DioError [DioErrorType.response]:Http 状态错误 [413]”。看来我发送了一个大查询。 这个问题的结果是什么? 帮帮我!
提前致谢!

更新:我找到了原因。它是“当 ListFile 的图像参数大于 1、2 时 => Http 状态错误 [413]”。但我不知道找到解决办法。

代码:

Future createPost(FormPostingArgument? argument) async {
    Map<String, dynamic> param = {};
    param['plan_id'] = argument?.planId;
    param['is_advance_notice_required'] = argument?.isAdvancedNoticeRequired;
    for (int index = 0; index < argument!.listFile.length; index++) {
      if (argument.listFile[index].typeFile == TypeFile.IMAGE) {
        ///type 1: Image, 2: Video
        param['image_or_video[$index][type]'] = 1;
        param['image_or_video[$index][image]'] = await MultipartFile.fromFile(
          argument.listFile[index].pathFile,
          filename: 'File$index',
          contentType: MediaType("image", argument.listFile[index].pathFile.split(".").last),
        );
      } else {
        param['image_or_video[$index][type]'] = 2;
        param['image_or_video[$index][video]'] = await MultipartFile.fromFile(
          argument.listFile[index].pathFile,
          filename: 'File$index',
          contentType: MediaType("video", argument.listFile[index].pathFile.split(".").last),
        );
      }
    }
    param['subcategory_id'] = 1;
    param['title'] = argument.title;
    param['body'] = argument.content;
    param['prefecture_cd'] = argument.prefecture?.prefectureId;
    param['city'] = argument.district;
    if (checkNullText(argument.address))
      param['street_number'] = argument.address;
    if (checkNullText(argument.buildingName))
      param['building_name'] = argument.buildingName;
    if (checkNullText(argument.numberOfPeople))
      param['num_of_people'] = int.parse(argument.numberOfPeople!);
    if (checkNullText(argument.gender))
      param['sex'] = getParamGender(argument.gender);
    if (checkNullText(argument.ageLower!))
      param['age_lower'] = int.parse(argument.ageLower!);
    if (checkNullText(argument.ageUpper))
      param['age_upper'] = int.parse(argument.ageUpper!);
    param['start_time'] = argument.startTime;

    var _dio = Dio();
    String? token = await LocalStorage().getToken();
    _dio.interceptors.add(InterceptorsWrapper(onRequest: (request, handler) {
      request.headers["Authorization"] = "Bearer $token";
      return handler.next(request);
    }));
    var response = await _dio
        .post(
      NetworkConfigure.BASE_URL + NetworkConfigure.API_NAME + "posts",
      data: FormData.fromMap(param),
    )
        .catchError((onError) {
      print("Error: $onError");
    });
    print("Result: ${response.data}");
  }

【问题讨论】:

    标签: flutter flutter-layout flutter-dependencies


    【解决方案1】:

    当您的请求实体对于服务器来说太大时,会发生 Http 状态代码 413。 当您尝试上传文件 [图像/视频/文档] 时。确认以下几点

    1. 如果服务器指定了上传文件的限制大小,则尝试使用该大小发布,否则返回413状态码。
    2. 如果服务器中没有指定,则默认为1mb

    尝试发布小于 1mb 的图片或视频,如果您收到成功响应,请在服务器中增加上传大小。

    【讨论】:

    • 服务器限制图片大小。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 2018-08-23
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2023-03-15
    • 2013-09-17
    相关资源
    最近更新 更多