uploadImageBytes method

Future<UploadJsonResult> uploadImageBytes(
  1. String? fileName,
  2. List<int>? fileBytes,
  3. String? mimeType
)

Implementation

Future<UploadJsonResult> uploadImageBytes(
    String? fileName, List<int>? fileBytes, String? mimeType) async {
  // 检测是否含有后缀,如果没有后缀,则添加 .png后缀
  if (!fileName!.contains(".")) {
    fileName += '.png';
  }
  String? username = SpUtil.getString(BytedeskConstants.uid);
  const uploadUrl =
      '${BytedeskConstants.httpUploadUrl}/visitor/api/upload/image';
  BytedeskUtils.printLog(
    "web uploadImageBytes fileName $fileName, username $username, upload Url $uploadUrl, bytes ${fileBytes!.length}, mimeType $mimeType",
  );

  var uri = Uri.parse(uploadUrl);
  var request = http.MultipartRequest('POST', uri)
    ..fields['file_name'] = "${username!}_$fileName"
    ..fields['username'] = username
    ..files.add(http.MultipartFile.fromBytes('file', fileBytes,
        filename: fileName, contentType: MediaType.parse(mimeType!)));

  http.Response response =
      await http.Response.fromStream(await request.send());
  // debugPrint("Result: ${response.body}");

  //解决json解析中的乱码问题
  Utf8Decoder utf8decoder = const Utf8Decoder(); // fix 中文乱码
  //将string类型数据 转换为json类型的数据
  final responseJson = json.decode(utf8decoder.convert(response.bodyBytes));
  debugPrint("web upload image responseJson $responseJson");
  //
  return UploadJsonResult.fromJson(responseJson);
}