Future<String?>
upload(- String path,
- Map<String, String> fields,
- Uint8List obj
)
Implementation
Future<String?> upload(
String path, Map<String, String> fields, Uint8List obj) async {
if (path.startsWith('/')) path = path.replaceFirst('/', '');
http.MultipartRequest request = http.MultipartRequest('POST', _uploadUri);
request.fields.addAll(fields);
request.fields["content-md5"] = base64.encode(MD5Digest().process(obj));
request.fields['key'] = path;
request.files.add(http.MultipartFile.fromBytes('file', obj));
http.StreamedResponse rsp = await request.send();
if (rsp.statusCode == 204) {
return rsp.headers['x-amz-version-id'];
} else {
String body = await rsp.stream.bytesToString();
if (body.contains('Policy expired')) {
throw WasabiExceptionExpired(body);
} else {
throw HttpException('HTTP Error ${rsp.statusCode}: $body');
}
}
}