本文介绍如何使用上传回调。
注意事项
使用本文示例前您需要先通过自定义域名、STS等方式创建OSSClient,具体请参见初始化。
说明所创建存储空间的所属地域取决于初始化配置的endpoint地域信息。
要上传文件,您必须有
oss:PutObject
权限。具体操作,请参见为RAM用户授权自定义的权限策略。
示例代码
以下代码用于上传回调:
OSSPutObjectRequest * request = [OSSPutObjectRequest new];
// 填写Bucket名称,例如examplebucket。
request.bucketName = @"examplebucket";
// 填写不包含Bucket名称在内的Object完整路径,例如exampledir/exampleobject.txt。
request.objectKey = @"exampledir/exampleobject.txt";
request.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"];
// 设置回调参数
request.callbackParam = @{
@"callbackUrl": @"<your server callback address>",
@"callbackBody": @"<your callback body>"
};
// 设置自定义变量。
request.callbackVar = @{
@"<var1>": @"<value1>",
@"<var2>": @"<value2>"
};
request.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
OSSTask * task = [client putObject:request];
[task continueWithBlock:^id(OSSTask *task) {
if (task.error) {
OSSLogError(@"%@", task.error);
} else {
OSSPutObjectResult * result = task.result;
NSLog(@"Result - requestId: %@, headerFields: %@, servercallback: %@",
result.requestId,
result.httpResponseHeaderFields,
result.serverReturnJsonString);
}
return nil;
}];
// 实现同步阻塞等待任务完成。
// [task waitUntilFinished];