首页 > 解决方案 > 如何从 MultipartRequest 中获取 Content-Length - Flutter

问题描述

我正在尝试将数据发布到服务器,并且我成功地从服务器获得了真实的响应,但是我发布的项目没有反映在服务器中。但是,当我对邮递员执行相同的请求时,它会被发布并反映在服务器中。因此,在检查其中一些内容时,我认为 Content-Type、Content-Length 和 Host 是邮递员请求方面的强制性要求,但我刚刚在我的代码中实现了 Content-Type。所以尝试一下,我想如果我添加 Content-Length 和 Host 可能它可能会反映在服务器中,但如何获取该数据?

下面是我的代码

var uri = Uri.parse(Constant.postAdUrl);
    Map<String, String> headers = {
      'Content-Type': 'multipart/form-data',
      "Accept": "application/json",
      'Content-Length' : ''
    };
    http.MultipartRequest request = new http.MultipartRequest('POST', uri);
    request.headers.addAll(headers);
    List<http.MultipartFile> newList = new List<http.MultipartFile>();
    for (int i = 0; i < images.length; i++) {
      var path =
          await FlutterAbsolutePath.getAbsolutePath(images[i].identifier);
      File imageFile = File(path);
      var streams = new http.ByteStream(imageFile.openRead());
      var lengths = await imageFile.length();
      request.files.add(await new http.MultipartFile(
          'files[]', streams, lengths,
          filename: _image.path));
    }
    if (_image != null) {
      request.files.add(await new http.MultipartFile('adcover', stream, length,
          filename: _image.path));
    }
    request.files.addAll(newList);
    request.fields['ads_userfkid'] = userId;
    request.fields['ads_name'] = widget.title;
    request.fields['ads_description'] = widget.description;
    request.fields['ads_price'] = widget.price;
    request.fields['ads_subcatfkid'] = widget.subId;
    request.fields['ads_location'] = widget.location;
    var response = await request.send();
    if (response.statusCode == 200) {
      Navigator.pushReplacement(
          context, MaterialPageRoute(builder: (context) => DashboardScreen()));
    } else {
      print("Upload Failed");
    }
  }

标签: jsonflutterdart

解决方案


推荐阅读