アップロード
中断/再開が可能な Object Body のアップロードをする例を以下に挙げます。
-
// Create a KiiObject in an application-scope bucket. KiiObject object = Kii.bucket("AppBucket").object(); // Set key-value pairs. object.set("title", "MyVideo"); object.set("fileSize", 10485760); // Specify a file to upload. File localFile = new File(Environment.getExternalStorageDirectory(), "sample.mp4"); // Create an uploader. KiiUploader uploader = object.uploader(getApplicationContext(), localFile); try { // Start uploading. uploader.transfer(new KiiRTransferProgressCallback() { @Override public void onProgress(KiiRTransfer operator, long completedInBytes, long totalSizeinBytes) { float progress = (float)completedInBytes / (float)totalSizeinBytes * 100.0f; } }); } catch (AlreadyStartedException e) { // The upload is already in progress. } catch (SuspendedException e) { // The upload has been suspended because of a network error or user interruption. } catch (TerminatedException e) { // The upload has been terminated because of the missing file or user interruption. } catch (StateStoreAccessException e) { // Failed to access the local storage. }
-
// Create a KiiObject in an application-scope bucket. KiiObject object = Kii.bucket("AppBucket").object(); // Set key-value pairs. object.set("title", "MyVideo"); object.set("fileSize", 10485760); // Specify a file to upload. File localFile = new File(Environment.getExternalStorageDirectory(), "sample.mp4"); // Create an uploader. KiiUploader uploader = object.uploader(getApplicationContext(), localFile); // Start uploading. uploader.transferAsync(new KiiRTransferCallback() { @Override public void onStart(KiiRTransfer operator) { } @Override public void onProgress(KiiRTransfer operator, long completedInBytes, long totalSizeinBytes) { float progress = (float) completedInBytes / (float) totalSizeinBytes * 100.0f; } @Override public void onTransferCompleted(KiiRTransfer operator, Exception exception) { if (exception != null) { // Handle the error. return; } } });
ここでは以下の処理を実施しています。
- (必要に応じて)KiiObject にキーと値のペアをセット。ファイル名、ファイルサイズ、Object Body の有無などを登録しておくことも可能。
- アップロード対象ファイル(sample.mp4)のリファレンスを作成。
- アップロード対象ファイルのリファレンスを指定して
uploader()
メソッドを実行し、KiiUploader
インスタンスを作成。 transfer()
メソッドを実行して、ファイルのアップロードを開始。
Object Body をすでに持つ KiiObject に対して新たにファイルをアップロードした場合、このファイルにより Object Body が上書きされます。
onProgress()
メソッドは、転送の進捗状況に応じて呼び出されます。転送サイズが小さい場合は、1 回目の呼び出しで 100% の進捗を示すことがあります。
何らかの理由によりアップロードが中断した場合は SuspendedException
が発生します。この場合、中断箇所よりアップロードの再開を行うことができます。再開方法については アップロードの再開 を参照してください。
Object Body のアップロードで外部記憶装置にアクセスする際、実行時パーミッションが必要になる場合があります。実装方法の詳細は、実行時パーミッションの取得 を参照してください。