appendObject method
Future<Response>
appendObject(
- List<
int> fileData, - String fileKey, {
- CancelToken? cancelToken,
- PutRequestOption? option,
- int? position,
upload object(file) to oss server
fileData
is the binary data that will send to oss server
position
next position that append to, default value is 0.
Implementation
@override
Future<Response<dynamic>> appendObject(
List<int> fileData,
String fileKey, {
CancelToken? cancelToken,
PutRequestOption? option,
int? position,
}) async {
final String bucket = option?.bucketName ?? bucketName;
final Auth auth = await getAuth();
final MultipartFile multipartFile = MultipartFile.fromBytes(
fileData,
filename: fileKey,
);
final Map<String, dynamic> internalHeaders = {
'content-type': contentType(fileKey),
'content-length': multipartFile.length,
'x-oss-object-acl': option.acl,
'x-oss-storage-class': option.storage,
};
final Map<String, dynamic> externalHeaders = option?.headers ?? {};
final Map<String, dynamic> headers = {
...internalHeaders,
...externalHeaders
};
final String url =
"https://$bucket.$endpoint/$fileKey?append&position=${position ?? 0}";
final HttpRequest request = HttpRequest.post(url, headers: headers);
auth.sign(request, bucket, "$fileKey?append&position=${position ?? 0}");
return _dio.post(
request.url,
data: multipartFile.chunk(),
cancelToken: cancelToken,
options: Options(headers: request.headers),
onSendProgress: option?.onSendProgress,
onReceiveProgress: option?.onReceiveProgress,
);
}