upload method

Future<UploadResult> upload(
  1. String bucket,
  2. String path,
  3. Uint8List data, {
  4. String contentType = 'application/octet-stream',
})

Upload a file. Overwrites if it already exists.

Implementation

Future<UploadResult> upload(
  String bucket,
  String path,
  Uint8List data, {
  String contentType = 'application/octet-stream',
}) async {
  final uri = _uri(
    '/storage/o/${Uri.encodeComponent(bucket)}/${Uri.encodeComponent(path)}',
  );
  final request = await _http.openUrl('PUT', uri);
  request.headers.contentType = ContentType.parse(contentType);
  request.contentLength = data.length;
  request.add(data);
  final response = await request.close();
  final body = await response.transform(utf8.decoder).join();

  if (response.statusCode >= 400) {
    throw StorageException(_parseError(body, response.statusCode));
  }

  final json = jsonDecode(body) as Map<String, dynamic>;
  return UploadResult.fromJson(json);
}