2016-07-14 18 views
2

SAS URIにファイルをアップロードすることができません、しかし、私はAzureストレージに自分のファイルをアップロードすることはできませんよ私はマイクロソフトのストレージライブラリを使用しています。ここ

コード:

public class UploadFile { 

public static void uploadFile(String sasURL,String filePath,String submissionGuid) throws MalformedURLException, URISyntaxException 
{ 
    URI sasUrl = new URI(sasURL); 

    try 
    { 
     CloudBlobContainer container = new CloudBlobContainer(sasUrl); 
     CloudBlockBlob blob = container.getBlockBlobReference(sasUrl.getPath()); 
     File source = new File(filePath); 
     blob.upload(new FileInputStream(source), source.length()); 
    } 
    catch (Exception e) 
    { 
     // Output the stack trace. 
     e.printStackTrace(); 
    } 


} 
} 

サスウリ生成は次のとおりです。

java.io.IOException 
at com.microsoft.azure.storage.core.Utility.initIOException(Utility.java:569) 
at com.microsoft.azure.storage.blob.BlobOutputStream.writeBlock(BlobOutputStream.java:444) 
at com.microsoft.azure.storage.blob.BlobOutputStream.access$000(BlobOutputStream.java:53) 
at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:388) 
at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:385) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
https://assetservice.blob.core.windows.net/org66/7594787459-5373-4485-a5ad-8b8a9b5af62c/Input/834793kfhreh-ee2a-4c80-a766-146fc139f2c4.hlkx?sv=2013-08-15&sr=b&sig=jkdhfueiwhdjscnkljshchcvdhcdsnc&se=2016-07-13T18%3A18%3A09Z&sp=w 

私はエラーメッセージを取得しています私は、私もorg66を渡してみましたとして、私はブロブコンテナ名を渡す必要がある部分を理解しないと思います

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: com.microsoft.azure.storage.StorageException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. 
at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:89) 
at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:305) 
at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:175) 
at com.microsoft.azure.storage.blob.CloudBlockBlob.uploadBlockInternal(CloudBlockBlob.java:904) 
at com.microsoft.azure.storage.blob.CloudBlockBlob.uploadBlock(CloudBlockBlob.java:876) 
at com.microsoft.azure.storage.blob.BlobOutputStream.writeBlock(BlobOutputStream.java:438) 
... 9 more 

:sasuriが渡されているにもかかわらず、同様

と許可エラーが、その中のすべての必要なパラメータを持っていますそれは私のために働かなかった。

私はなど私のコンテナ名が何であるかのように一部の上にも混乱しています

+0

あなたのSASの有効期限は2日前です(se = 2016-07-13)。 – yonisha

+0

私はその事実を知っています。パブリックドメインに投稿するために無作為に番号を変更しました。 – MikasaAckerman

答えて

5

CloudBlockBlob blob = new CloudBlockBlob(new URI(sasURL)); 
File source = new File(filePath); 
blob.upload(new FileInputStream(source), source.length()); 

あなたはこのofficial documentationに、コンテナSAS & blob SASを正しく使用する方法の詳細を見つけることができます。それはC#に基づいていますが、コードは一般的に似ています。

+1

エラーはありませんが、アップロードステータスを追跡できる方法はありますか?完了したら、他の作業を続行できますか? – MikasaAckerman

+1

ダッシュボードでは、私は次のことを待っています:https://msdn.microsoft.com/en-us/library/windows/hardware/dn800660%28v=vs.85%29.aspx?f = 255&MSPPError = -2147217396 for Windows 10.10用のドライバの署名自動化、手順4で停止しました – MikasaAckerman

0

まず、あなたのSASは、2日前(SE = 2016年7月13日)の有効期限が切れています。

第二に、CloudBlobContainer docsからあなたは、コンテナURIを取得する必要があります使用してコンストラクタ:

コンテナに絶対URIを指定するURIオブジェクト。

あなたのコンテナが公開されている場合は、それ以外の場合は、SASを必要としない - SASは同様に、特定の塊のために作成することができますよう、コンテナのためのSAS URIを使用します。

あなたのSASで "SR = B &" PERが、それはブロブレベルSASはなく、コンテナレベルSASだ、あなたは直接ではないCloudBlobContainerを経由して、あなたのCloudBlockBlobオブジェクトを構築するためにそれを使用する必要があります
+0

'あなたのコンテナが公開されていれば、SASは必要ありません。一部の操作(アップロードを含む)では、コンテナが公開されていてもSASトークンが必要です。 –

+0

私は何をするべきか理解していない、私はこの時点で立ち往生しています。 – MikasaAckerman

+0

@MikasaAckerman SASをどのように生成しましたか?あなたのコードはOKだと思われますが、この特定のblobにはSASを使用している可能性があります – yonisha

関連する問題