UPD: Ecco il mio implemented solution to this problemCarica per Azure Blob archiviazione con Shared Access Key
Sto cercando di caricare stoccaggio blob Azure tramite biblioteca Azure.Storage (non API REST) e l'autenticazione tramite Shared Access Key .
Ho visto questo blog post, ma l'API è cambiata dal post e ora non riesco a ottenere lo stesso risultato.
Ecco quello che ho:
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);
}
aventi: (. Guid è il nome del contenitore, esistono già, ha creato da qualche altra parte)
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
(emesso anche da qualche altra parte nel codice)
blobWithSas.AbsoluteUri
= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24/foldername/filename.txt
Il blob non esiste, voglio caricare un nuovo file e creare un blob. Ho l'applicazione "Server" che contiene la chiave di accesso all'account di archiviazione di Azure. Il server invia SAS ai client e ai client carica i file direttamente in Azure. Quindi SAS dovrebbe solo scrivere, non leggere e i client creeranno i file in cui il server li dirà (contenitore, nomi di cartella)
Il problema si verifica GetBlobReferenceFromServer
- Ottengo 404 errore da Archiviazione di Azure. Sì, il BLOB non esiste e non vi è alcun riferimento. Quindi, dato CloudBlobClient, come posso caricare un file in un BLOB?
p.s. Mi rendo conto che ci sono API REST per queste cose. Ma ho usato la libreria Microsoft.WindowsAzure.Storage
prima e vorrei evitare il servizio REST, se possibile.
Grazie! sei una stella! Mi mancava la creazione dell'oggetto contenitore con SAS. – trailmax
Ho rilevato che queryString era codificato URL e che blobContainerSasUri non lo era, il che ha reso la chiamata di sottostringa non funzionante. Sostituisci la riga con 'string blobContainerUri = blobContainerSasUri.Split ('?') [0];' – tster