2016-05-24 14 views
0

私はAndroid APIでAzureストレージを使用しています。私は1つの場所から別の(同じブロブのコンテナ内の)ブロックブロブをコピーしようとしています。Azureブロブストレージ - SAMEコンテナ内のBLOBブロックのコピー

しかし、コピーを作成すると、startCopyメソッドを呼び出した後に「CannotVerifyCopySource」エラーが発生します。

コード例:問題になるかもしれないものに

private void sample(String path1, String path2, File file) { 

    CloudBlockBlob blob1 = container.getBlockBlobReference(path1); 
    CloudBlockBlob blob2 = container.getBlockBlobReference(path2); 

    blob1.upload(new FileInputStream(file), file.length()); 
    blob1.startCopy(blob2); 
} 

任意のアイデア?

敬具、下約startCopy

+0

エラーについてはこちらのエラーコードの詳細を見てみる:https://msdn.microsoft.com/en-us/library/azure/dd179439.aspx、ブロブサービスは(500内部サーバーエラーを出しcrappedようです)。お勧めのエラーの詳細をキャプチャしてここで共有できますか? –

+0

'blob1'が有効であることをどのように知っていますか?アップロードは機能しますか? 'blob1'から' blob2'へのコピーを試みる前にアップロードが完了していますか? –

+0

アップロードが完了しました(アップロード後にブレークポイントを使用し、リポジトリにチェックが入っていてファイルがそこにあり、例外もスローされませんでした)。すべてのコードが同期して実行されます。このエラーは、startCopyメソッドでスローされます。 – TiagoOliveira

答えて

1

参照ソース。ここではblob2.startCopy(blob1)を使うべきだと思います。

/** 
    * Requests the service to start copying a block blob's contents, properties, and metadata to a new block blob. 
    * 
    * @param sourceBlob 
    *   A <code>CloudBlockBlob</code> object that represents the source blob to copy. 
    * 
    * @return A <code>String</code> which represents the copy ID associated with the copy operation. 
    * 
    * @throws StorageException 
    *    If a storage service error occurred. 
    * @throws URISyntaxException 
    */ 
    @DoesServiceRequest 
    public final String startCopy(final CloudBlockBlob sourceBlob) throws StorageException, URISyntaxException { 
     return this.startCopy(sourceBlob, null /* sourceAccessCondition */, 
       null /* destinationAccessCondition */, null /* options */, null /* opContext */); 
    } 
関連する問題