putObject method
Future<OSSObjectPut>
putObject(
- OSSObjectPut object, {
- String? bucket,
- String? endpoint,
- String? path,
- ProgressCallback? onSendProgress,
bucket
endpoint
一次性生效path
上传路径 如不写则自动以 Objecttype
time
生成path
Implementation
Future<OSSObjectPut> putObject(OSSObjectPut object,{
String? bucket,
String? endpoint,
String? path,
ProgressCallback? onSendProgress
}) async {
await verify();
final String objectPath = object.key;
final Map<String, dynamic> safeHeaders = _signer!.sign(
httpMethod: 'PUT',
resourcePath: '/${bucket ?? this.bucket}/$objectPath',
headers: {
'content-type': object.mediaType.mimeType,
},
).toHeaders();
try {
final String url =
'https://${bucket ?? this.bucket}.${endpoint ?? this.endpoint}/$objectPath';
final Uint8List bytes = object.bytes;
// if (object is OSSImageObject && !object.fullImage) {
// bytes = MediaAssetUtils.compressImage(file);
// }
await _http.put<void>(
url,
data: Stream.fromIterable(bytes.map((e) => [e])),
options: Options(
headers: <String, dynamic>{
...safeHeaders,
...<String, dynamic>{
'content-length': object.bytes.length,
}
},
contentType: object.mediaType.mimeType,
),
onSendProgress:onSendProgress
);
object.url = url;
object.exist = true;
return object;
} catch (e) {
rethrow;
}
}