2017-03-24 27 views
0

私はASP.NET Webフォームアプリケーションを持っています。UploadFromFileを使用してAzureにファイルをアップロードする

私のフォームの1つでは、AzureからPDFをダウンロードしていて、rasteredge(PDFビューア)を使用して表示されます。これにより、PDFに注釈を追加して保存することができます。

注釈付きのファイルは、アプリケーション(RasterEdge_Cache)のルートにあるフォルダに保存されます。 UploadFromFile関数を使用して、PDFをAzureにアップロードしたいと思います。

An exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll but was not handled in user code Additional information: Could not find a part of the path 'C:\Program Files (x86)\IIS Express\~\RasterEdge_Cache\193304798925\output\A-0002-00008-00205Anno.pdf'.

は、私は、ファイルのパスが正しくないと仮定し、私は、どのようなパスが必要です。

public static void UploadFile(DTO.BlobUpload b) 
{ 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["SN_ZEUXYS"]); 
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();    
    CloudBlobContainer container = blobClient.GetContainerReference(b.Container); 
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(b.FileName); 
    // b.FilePath = "~/RasterEdge_Cache/193304798925/output/A-0002-00008-00205Anno.pdf" 
    blockBlob.UploadFromFile(b.FilePath); 
} 

これは私が取得エラーメッセージは次のとおりです。

この

は、私が使用しています機能です私はUploadFromFileを正しく使用していますか?

ありがとうございました。

答えて

0

ファイルパスは相対パスなので、正確な場所を指定する必要があります。 Server.MapPathメソッドを使用して、サーバー上のアプリケーションのルートへの物理パスを確認することを検討してください。

HttpContext httpContext = HttpContext.Current; 
HttpServerUtility server = httpContext.Server; 
b.FilePath = server.MapPath("~/RasterEdge_Cache/193304798925/X.pdf") 
+0

こんにちは、 まだエラーメッセージが表示されますが、ファイルがserver.MapPathで見つかったようです。 これは私が持っているエラーです。 Microsoft.WindowsAzure.Storage.dllで 'Microsoft.WindowsAzure.Storage.StorageException'型の例外が発生しましたが、ユーザーコードで処理されませんでした。 追加情報:リモートサーバーからエラーが返されました。(404)が見つかりません。 問題は、私は正しい関数を使用していますか?UploadFromFile? blockBlob.UploadFromFile(b.FilePath); また、別の機能を使用する必要がありますか、どのような機能を使用すればいいですか。 – Anne

+0

設定の問題のようです。質問にAzureの設定を追加してください。 (機密情報を隠すことを検討してください) –

+0

問題を解決しましたか? –

0

An exception of type 'Microsoft.WindowsAzure.Storage.StorageException' occurred in Microsoft.WindowsAzure.Storage.dll but was not handled in user code Additional information: The remote server returned an error: (404) Not Found. So the question is, am I using the correct function: UploadFromFile? blockBlob.UploadFromFile(b.FilePath);

このarticleによると、 "リモートサーバーがエラーを返しました:(404)見つかりませんでした。"コンテナまたはブロブが見つからないためにコンテナに対するアップロード操作が失敗した場合に発生します。

だから、最初に "b.Container、b.FileName"の値が存在することを確認するか、CreateIfNotExistsメソッドを使用することをお勧めします。

詳細については、下記のコードを参照してください。ヒントを教えてください。

protected void Button5_Click(object sender, EventArgs e) 
     { 
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse("connection string"); 
      CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
      //check the b.Container value is right and exists 
      CloudBlobContainer container = blobClient.GetContainerReference("foobar"); 
      CloudBlockBlob blockBlob = container.GetBlockBlobReference("TestFile.pdf"); 
      HttpContext httpContext = HttpContext.Current; 
      HttpServerUtility server = httpContext.Server; 
      string FilePath = server.MapPath("~/test/TestFile.pdf"); 
      //by using this code will create the container if not exists 
      container.CreateIfNotExists(); 
      blockBlob.UploadFromFile(FilePath); 
     } 
関連する問題