我的應用程序具有批量上傳功能,電子表格中的用戶提供文件路徑,例如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'傳遞。正確? –