Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 尝试在Flatter中使用MultipartRequest上载文件时发生握手异常_Flutter_File Upload_Mobile Application_Android Applicationinfo_Flutter Http - Fatal编程技术网

Flutter 尝试在Flatter中使用MultipartRequest上载文件时发生握手异常

Flutter 尝试在Flatter中使用MultipartRequest上载文件时发生握手异常,flutter,file-upload,mobile-application,android-applicationinfo,flutter-http,Flutter,File Upload,Mobile Application,Android Applicationinfo,Flutter Http,我试图在flatter中使用MultipartRequest将一个文件上传到s3,但在到达“response.send()”时,我得到了 我在Postman中为it工作关闭了“SSL证书验证”,那么在上传时有没有办法在Flitter中关闭它 以下是我使用的代码: var request = http.MultipartRequest('POST', uri) ..fields['key'] = data.key ..fields['x-amz-algorithm'] = data

我试图在flatter中使用MultipartRequest将一个文件上传到s3,但在到达“response.send()”时,我得到了

我在Postman中为it工作关闭了“SSL证书验证”,那么在上传时有没有办法在Flitter中关闭它

以下是我使用的代码:

var request = http.MultipartRequest('POST', uri)
    ..fields['key'] = data.key
    ..fields['x-amz-algorithm'] = data.algorithm
    ..fields['x-amz-credential'] = data.credential
    ..fields['x-amz-date'] = data.date
    ..fields['x-amz-security-token'] = data.securityToken
    ..fields['policy'] = data.policy
    ..files.add(await http.MultipartFile.fromPath('File', imagePath, filename: imageName));
    print(request.toString());
    try {
        var  response = await request.send();
    await for (var value in response.stream.transform(utf8.decoder)) {
        print(value);
     }
    } catch (e) {
    print(e.toString());
    }

如果有人面临同样的问题,我可以像这样使用“Dio”包解决上述问题

Dio _client = Dio();
_client.interceptors.add(LogInterceptor());
FormData formData = FormData.fromMap({
  'key': data.key,
  'x-amz-algorithm': data.algorithm,
  'x-amz-credential': data.credential,
  'x-amz-date': data.date,
  'x-amz-security-token': data.securityToken,
  'policy': data.policy,
  'x-amz-signature': data.signature,
  'File': await MultipartFile.fromFile(
    filePath,
    filename: fileName,
  )
});
(_client.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
    (HttpClient dioClient) {
  dioClient.badCertificateCallback =
      (X509Certificate cert, String host, int port) => true;
  return dio;
};
try {
  await _client.post(
    data.uploadUrl,
    data: formData,
  );
  _client.close();
} catch (e) {
  print(e.toString());
  _client.close();
}
Dio _client = Dio();
_client.interceptors.add(LogInterceptor());
FormData formData = FormData.fromMap({
  'key': data.key,
  'x-amz-algorithm': data.algorithm,
  'x-amz-credential': data.credential,
  'x-amz-date': data.date,
  'x-amz-security-token': data.securityToken,
  'policy': data.policy,
  'x-amz-signature': data.signature,
  'File': await MultipartFile.fromFile(
    filePath,
    filename: fileName,
  )
});
(_client.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
    (HttpClient dioClient) {
  dioClient.badCertificateCallback =
      (X509Certificate cert, String host, int port) => true;
  return dio;
};
try {
  await _client.post(
    data.uploadUrl,
    data: formData,
  );
  _client.close();
} catch (e) {
  print(e.toString());
  _client.close();
}