我的应用程序具有批量上传功能,电子表格中的用户提供文件路径,例如Client1/Creative Files/File1.jpg,这些文件将如何存储在云文件中分享。批量上传过程将从该位置读取文件,如果找到,则将复制到blob存储并在数据库中创建一个条目。最初,我拥有blob存储中的所有内容,因此阅读这些文件非常简单。无法从Azure文件共享中读取文件
CloudBlobContainer container = this.GetCloudBlobContainer();
var blob = container.GetBlockBlobReference(filePath);
,因为我无法映射为Blob存储帐户的网络驱动器,我创建了一个新的存储帐户,并创建了一个文件服务,所以我可以映射到共享的Windows的用户上传的文件直接从他们的机器。现在,我有问题从这个共享中获取文件,因为它总是说文件不存在。
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(),它回来了“假”,虽然该文件是在那里。
filePath是Client1/Creative Files/File1.jpg。我猜如果我只是上传File1.jpg到共享没有文件夹,这可能应该工作,但添加子文件夹正在创建一个问题。我们需要组织这些文件,并且可能会有几个基于客户端的嵌套文件夹以及用户如何组织它们,这就是为什么我们要求他们在电子表格中提供路径的原因。我错过了什么?
当我调试应用程序,并检查文件StorageUri,我看到https://storageaccount.file.core.windows.net/sharename/Client%5CCreative%20Files%5CFile1.jpg
在浏览器上复制此网址,我没有看到这个文件。就像我说的,在一个blob容器中,这个过程只是在处理文件,但是当我将文件移动到文件共享时,我无法返回文件。
你是如何确保文件存在于共享?你是否使用某种工具来检查文件的存在? –
我已经映射到来自Windows的azure文件共享,并且已经按照电子表格中所示的相同结构(即Client1/Creative Files/File1.jpg)上载了该文件。我还可以通过访问Azure门户 - >存储帐户 - >文件服务 - >共享进行验证。所以,当我使用上面的代码时,该文件存在但不存在。 – bladerunner
还有一件事...因此,在你的代码中,你将'filePath'作为'Client1/Creative Files/File1.jpg'传递。正确? –