UPD: Đây là tôi implemented solution to this problemUpload để Azure Blob lưu trữ với Chia sẻ kết nối chính
Tôi đang cố gắng để tải lên Azure lưu trữ blob qua thư viện Azure.Storage (không nghỉ ngơi API) và chứng thực qua Chia sẻ kết nối chính .
Tôi đã thấy số này blog post, nhưng API đã thay đổi kể từ bài đăng và bây giờ tôi không thể nhận được kết quả tương tự.
Dưới đây là những gì tôi có:
var blobClient = new CloudBlobClient(new Uri(blobWithSas.BaseUri), new StorageCredentials(blobWithSas.Sas));
// here I receive 404 error
var blob = blobClient.GetBlobReferenceFromServer(new Uri(blobWithSas.AbsoluteUri));
using (var stream = new FileStream(fullFilePath, FileMode.Open))
{
blob.UploadFromStream(stream);
}
Có: (. Guid là tên của container, đã tồn tại, tạo ra ở một nơi khác)
blobWithSas.BaseUri
= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24
blobWithSas.Sas
= ?sv=2012-02-12&se=2013-06-23T03%3A04%3A53Z&sr=b&sp=w&sig=NaMqgXRMXDFvLAp8LTskgplAKp%2B9LCZzq8WK9Zo35x8%3D
(cũng được cấp một nơi khác trong mã)
blobWithSas.AbsoluteUri
= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24/foldername/filename.txt
Blob không tồn tại, tôi muốn tải lên tệp mới và tạo blob. Tôi có ứng dụng "Máy chủ" đang giữ Khóa truy cập vào Tài khoản lưu trữ Azure. Máy chủ sẽ phát hành SAS cho khách hàng và khách hàng tải tệp trực tiếp lên Azure. Vì vậy, SAS sẽ chỉ để viết, không đọc và khách hàng sẽ tạo ra các tập tin mà máy chủ nói với họ (container, tên thư mục)
Vấn đề xuất hiện trên GetBlobReferenceFromServer
- Tôi nhận được lỗi 404 từ Azure lưu trữ. Có, blob không tồn tại và không có tham chiếu. Vì vậy, cho CloudBlobClient, làm thế nào tôi có thể tải lên một tập tin vào một blob?
p.s. Tôi nhận ra có REST API cho những thứ này. Nhưng trước đây tôi đã sử dụng thư viện Microsoft.WindowsAzure.Storage
và muốn tránh dịch vụ REST nếu có thể.
Cảm ơn bạn! bạn là một ngôi sao! Tôi đã thiếu tạo đối tượng container với SAS. – trailmax
Tôi thấy rằng queryString đã được mã hóa URL và blobContainerSasUri không làm cho cuộc gọi Substring không hoạt động chính xác. Thay thế dòng đó bằng 'string blobContainerUri = blobContainerSasUri.Split ('?') [0];' – tster