繁体   English   中英

Flutter 图片上传问题

[英]Flutter Image upload issue

我正在尝试使用以下功能上传图像一切正常只是我想在帖子中发送图像并且当我尝试获取图像时什么都没有

这是用于调用 API

Future getUploadImg(access_token,File _image) async {
  print("Image: $_image");
  String apiUrl = '$_apiUrl/user/upload-profile-image';
  final length = await _image.length();
  final request = new http.MultipartRequest('POST', Uri.parse(apiUrl));
  request.headers['Accesstoken'] = "Bearer $access_token";
  request.files.add(new http.MultipartFile('imagefile',_image.openRead(), length));

  http.Response response = await http.Response.fromStream(await request.send());
  print("Result: ${response.body}");
  return json.decode(response.body);
}

我传递给服务器的文件是:

File: '/storage/emulated/0/Android/data/com.dotsquares.ecomhybrid/files/Pictures/c5df03f7-097d-47ca-a3c5-f896b2a38c086982492957343724084.jpg'

我最终得到了结果,如果有人需要帮助,我们需要传递字符串以共享我的工作代码:

Future getUploadImg(access_token,File _image) async {
  print("Image: $_image");
  var result;
  var stream = new http.ByteStream(DelegatingStream.typed(_image.openRead()));
  var length = await _image.length();
  var uri = Uri.parse('$_apiUrl/user/upload-profile-image');
  var request = new http.MultipartRequest("POST", uri);
  request.headers['Accesstoken'] = "Bearer $access_token";
  var multipartFile = new http.MultipartFile('imagefile', stream, length, filename: basename(_image.path));
  request.files.add(multipartFile);
  var response = await request.send();

  print(" ===================response code ${response.statusCode}");
  await response.stream.transform(utf8.decoder).listen((value) {
    print(" =====================response value $value");
    result = value;
  });
  return json.decode(result);

}

为避免以下问题:

  • 写入失败
  • 连接在...之前关闭
  • Flutter Doctor 错误 - SocketException:写入失败(操作系统错误:管道损坏,errno = 32)

您需要在标题中添加正确的参数。

就我而言,这些问题发生在上传图像和发送 base64 编码请求时。 我通过添加以下“连接”标头解决了它:“保持活动”:

  final response = await this.httpClient.put(
    url,
    encoding: Utf8Codec(),
    headers: <String, String>{
      'Content-Type': 'application/json; charset=UTF-8',
      'Accept': "*/*",
      'connection': 'keep-alive',
      'Accept-Encoding' : 'gzip, deflate, br',
    },
    body: body,
  );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM