私のアプリケーションには、スプレッドシートのユーザーがファイルパスを提供する一括アップロード機能があります.Client1/Creative Files/File1.jpgなどのファイルパスがあります。シェア。大量アップロードプロセスでは、その場所からファイルが読み込まれ、見つかった場合は、BLOBストレージにコピーされ、データベースにエントリが作成されます。最初は、ブロブストレージ内にすべてがありましたので、ファイルを読むのはかなり簡単でした。Azureファイル共有からファイルを読み取ることができません
CloudBlobContainer container = this.GetCloudBlobContainer();
var blob = container.GetBlockBlobReference(filePath);
私はBLOBストレージアカウントのネットワークドライブにマップすることができなかったとして、私は新しいストレージアカウントを作成し、ファイルサービスを作成し、そのユーザーがアップロードするために、私は窓の上の共有にマップすることができファイルをマシンから直接取り出します。今、私はファイルが存在しないと言っているので、この共有からファイルを取り出すことに問題があります。
public CloudFileShare GetCloudFileShare()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(settings.AzureDropBoxConnectionString);
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
CloudFileShare filehare = fileClient.GetShareReference(settings.AzureDropboxFileShare);
filehare.CreateIfNotExists();
return filehare;
}
public CloudFile GetFileFromCloudShare(string filePath)
{
CloudFileShare fileShare = this.GetCloudFileShare();
var file = fileShare.GetRootDirectoryReference().GetFileReference(filePath);
return file;
}
私がfile.Exists()をチェックすると、そこにファイルがあるのに "False"が返されます。
filePathはClient1/Creative Files/File1.jpgです。私は、File1.jpgをフォルダなしでShareにアップロードしても、これはうまくいくはずですが、サブフォルダを追加すると問題が発生していると思います。私たちはファイルを整理する必要があり、クライアントに基づいていくつかのネストされたフォルダが存在する可能性があり、ユーザーが最後にそれらを整理する方法があります。そのため、スプレッドシートにパスを提供するよう依頼します。私は何が欠けていますか?私は、アプリケーションをデバッグし、ファイルStorageUriをチェックすると
が、私はブラウザにこのURLをコピーしたら
https://storageaccount.file.core.windows.net/sharename/Client%5CCreative%20Files%5CFile1.jpgを参照してください、私は、ファイルが表示されません。私が言ったように、Blobコンテナでは、この同じプロセスはファイルだけで動作していましたが、ファイルをファイル共有に移動したときにファイルを返すことができません。
どのようにファイルが共有に存在していることを保証していますか?ファイルの存在を確認するために何らかのツールを使用していますか? –
私はWindowsからの紺碧のファイル共有にマップし、スプレッドシート、すなわちClient1/Creative Files/File1.jpgに示されているのと同じ構造でファイルをアップロードしました。 Azureポータル - >ストレージアカウント - >ファイルサービス - >共有に移動して確認することもできます。したがって、ファイルは存在しますが、上記のコードを使用していないと、そのファイルは存在しません。 – bladerunner
もうひとつ...あなたのコードでは、 'file1'を' Client1/Creative Files/File1.jpg'として渡しています。正しい? –