[英]Handshake Exception when trying to upload a file using MultipartRequest in flutter
我嘗試在 flutter 中使用 MultipartRequest 將文件上傳到 s3,但是在到達“response.send()”時我得到了
I/flutter ( 8307): HandshakeException: Handshake error in client (OS Error:
I/flutter ( 8307): CERTIFICATE_VERIFY_FAILED: self signed certificate in certificate chain(handshake.cc:354))
我在 Postman 中關閉了“SSL 證書驗證”以使其正常工作,那么在上傳時有什么方法可以在 flutter 中將其關閉?
這是我使用的代碼:
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”package 解決上述問題
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.