Azureクラウド空間にデータをアップロードする予定です。これを行うには、自分の都合でazure-storage-androidライブラリを使用します。アップロードは正常に機能しますが、アップロードの進捗状況を管理しようとしているときに問題が発生しています。私はかなりの解決策を見いださなかった。私のアップロード要求でこのctxt
オブジェクトを使用してAzureファイルクラウドストレージへの進捗状況をアップロードする
OperationContext ctxt = new OperationContext();
ctxt.getRequestCompletedEventHandler().addListener(new StorageEvent<RequestCompletedEvent>() {
@Override
public void eventOccurred(RequestCompletedEvent eventArg) {
totalUploaded = totalUploaded+rangeInBytes;
int progressPercentage = (int) ((float)totalUploaded/(float) totalLength * 100);
//range is 4Mb, totalUploaded and totalLength are initialized higher in the method.
//here, insert a callback to display the progress
publishProgress(progressPercentage);
}
});
destinationFile.upload(new FileInputStream(file),file.length(),null,null,ctxt);
:
私の最初のアイデアは、コードのこの作品でした。それは動作しますが、進捗状況はアップロードされた4MB(デフォルト値)ごとにアップロードされます。これは、ファイルのサイズが5-10MB程度であるため問題になります。それは滑らかではない進歩を作ります。私はその4MBの範囲サイズを下げようとしましたが、実際にはアップロード速度が大幅に低下しました。どうして?私は確信していませんが、レイテンシを作成する4つのX MBではなく、すべてのX MBで実行される承認プロセスがあると推測しています(もう一度、わかりません。
私の質問は、ファイルクラウド共有サービスのアップロード時に進捗状況を追跡する効率的な方法はありますか?私はREST Apiを使ってマルチパートアップロードを使用することを考えましたが、their APIを見ましたが、これを行うことはできませんでした。