azure server.Itで10-11 MBのビデオファイルをアップロードしようとしています。これは4gまたはwifiネットワーク上で正常に動作します。しかし、3gまたは2gネットワーク。遅いネットワークでAzureサーバーでビデオファイルをアップロードすると
java.io.IOException:クライアントは、指定された最大実行タイムアウト 以内に操作を完了できませんでした。
try { // Setup the cloud storage account. CloudStorageAccount account = CloudStorageAccount .parse("somestring"); // Create a blob service client CloudBlobClient blobClient = account.createCloudBlobClient(); BlobRequestOptions uploadOptions = new BlobRequestOptions(); uploadOptions.setMaximumExecutionTimeInMs(300000); uploadOptions.setTimeoutIntervalInMs(100000); RetryPolicy retryPolicy=new RetryExponentialRetry( 60000 /* minBackoff in milliseconds */, 30000 /* delatBackoff in milliseconds */, 180000 /* maxBackoff in milliseconds */, 3 /* maxAttempts */); uploadOptions.setRetryPolicyFactory(retryPolicy); // Get a reference to a container // The container name must be lower case // Append a random UUID to the end of the container name so that // this sample can be run more than once in quick succession. CloudBlobContainer container = blobClient.getContainerReference("videos"); // Create the container if it does not exist container.createIfNotExists(); // Make the container public // Create a permissions object BlobContainerPermissions containerPermissions = new BlobContainerPermissions(); OperationContext opContext = new OperationContext(); StorageEventMultiCaster storageEventMultiCaster = new StorageEventMultiCaster<>(); // Include public access in the permissions object containerPermissions .setPublicAccess(BlobContainerPublicAccessType.CONTAINER); storageEventMultiCaster.addListener(new StorageEvent<SendingRequestEvent>() { @Override public void eventOccurred(SendingRequestEvent eventArg) { // Do custom monitoring here... } }); opContext.setSendingRequestEventHandler(storageEventMultiCaster); // Set the permissions on the container container.uploadPermissions(containerPermissions); CloudBlockBlob blob = container.getBlockBlobReference(file.getName()); byte[] buffer = IOUtils.toByteArray(new FileInputStream(file)); ByteArrayInputStream inputStream = new ByteArrayInputStream(buffer); blob.upload(inputStream, inputStream.available(),null,uploadOptions,opContext); inputStream.close(); String url = blob.getUri().toString(); } catch (Throwable t) { }
私は
以下com.microsoft.azure.android:azure-storage-android:[email protected]
ライブラリを使用しています - :
が私のコード..です 更なる情報については、原因を参照してください。
ご協力いただければ幸いです。
感謝を私はエラー.'java.lang.IllegalArgumentExceptionを取得しています:引数が範囲外です。引数名:singleBlobPutThresholdInBytes、渡される値:262144. – Soham
申し訳ありません...私の悪い。コードに基づいて、値は1MBから32 MBの間でなければなりません(1 MBのこの制限がなぜ配置されているかわかりません)。 1MBを指定してみてください。 [参照:https://github.com/Azure/azure-storage-android/blob/ba03f63070ea0b5affb121203142e37d6dcb311c/microsoft-azure-storage/src/com/microsoft/azure/storage/blob/BlobRequestOptions.java#L361] –
私は再試行します。 – Soham