最終更新日:2023-02-02 10:57:22
クラウドVoDは、APPに埋め込むためのiOSアップロードSDKを提供し、iOSモバイルデバイスからクラウドVoDにファイルを簡単にアップロードできるようにします。
詳細については、ビデオアップロードトークンを取得するをご覧ください。
初期化して、アップロードドメイン、タイムアウト、アップロードの並行処理、および再試行を設定します。
/**
Create a Client to send upload request to Cloud VoD
@param baseURL --the upload domain(required)
@param timeout
@param concurrentCount --the concurrencies to do multi-part upload,range 5~10。
@param retryTimes */
- (instancetype _Nonnull)initWithBaseURL:(NSURL * _Nullable)baseURL
andTimeout:(NSTimeInterval)timeout
concurrentCount:(NSUInteger)concurrentCount
retryTimes:(NSUInteger)retryTimes;
WCSUploadObjectRequest *request = [[WCSUploadObjectRequest alloc] init];
request.token = @"the upload token,get the token via get-upload-token API";
request.fileName = @"origin name of the fie to be uploaded";
request.key = @"file name to be displayed on Cloud VoD console, will use fileName by default";
request.fileData = fileData; // file content to be uploaded
request.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
NSLog(@"%lld bytes sent, %lld total bytes sent, %lld total byte exptected", bytesSent, totalBytesSent, totalBytesExpectedToSend);
};
WCSClient *client = [[WCSClient alloc] initWithBaseURL:[NSURL URLWithString:"upload.cloudv.haplat.net"] andTimeout:30];
[[client uploadRequest:request] continueWithBlock:^id _Nullable(WCSTask<WCSUploadObjectResult *> * _Nonnull task) {
if (task.error) {
NSLog(@"The request failed. error: [%@]", task.error);
} else {
// Below is the response if request successfully
NSDictionary *responseResult = task.result.results;
}
return nil;
}];
モバイル端末では大容量のファイルをアップロードするのに時間がかかり、何らかの異常でファイルのアップロードが停止した場合、すべてのコンテンツの再アップロードが必要であり、ユーザーエクスペリエンスに影響を与えます。そのため、大きなファイルをアップロードする場合は、マルチパートアップロードを使用することをお勧めします。
マルチパートアップロードとは、大きなファイルを複数のブロックとカスタムサイズのチャンクにカットし、これらのブロックを並行してアップロードすることです。ブロックのアップロードに失敗した場合、クライアントはこのブロックを再アップロードするだけです。
注: 各ブロックの最大サイズは100Mを超えることはできません。最小サイズは4M以上にしてください。
WCSUploadObjectRequest *request = [[WCSUploadObjectRequest alloc] init];
request.token = @"the upload token,get the token via get-upload-token API";
request.fileName = @"origin name of the fie to be uploaded";
request.key = @"file name to be displayed on Cloud VoD console, will use fileName by default";
request.fileData = fileData; // file content to be uploaded
request.blockSize = 8 * 1024 * 1024; // block size
request.chunkSize = 64 * 1024; // chunk size
request.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
NSLog(@"%lld bytes sent, %lld total bytes sent, %lld total byte exptected", bytesSent, totalBytesSent, totalBytesExpectedToSend);
};
WCSClient *client = [[WCSClient alloc] initWithBaseURL:nil andTimeout:30];
[[client uploadRequest:request] continueWithBlock:^id _Nullable(WCSTask<WCSUploadObjectResult *> * _Nonnull task) {
if (task.error) {
NSLog(@"The request failed. error: [%@]", task.error);
} else {
// Below is the response if request successfully
NSDictionary *responseResult = task.result.results;
}
return nil;
}];