Ich habe ein Azure Storage-Konto erstellt. Ich habe eine 400 MB-ZIP-Datei, die ich zur späteren Verwendung in Blob-Speicher legen möchte.
Wie kann ich das tun, ohne Code schreiben zu müssen? Gibt es dafür eine Schnittstelle?
Kostenlose Tools:
Es gab ein altes Programm namens Azure Blob Explorer oder etwas, das mit dem neuen Azure SDK nicht mehr funktioniert.
Davon mag ich CloudBerry Explorer persönlich am besten.
Am einfachsten verwenden Sie Azure Storage PowerShell. Es enthielt viele Befehle zum Verwalten Ihrer Speichercontainer/Blob/Tabelle/Warteschlange.
In Ihrem erwähnten Fall können Sie Set-AzureStorageBlobContent verwenden, um eine lokale Datei als Block-Blob oder Seiten-Blob in den Azure-Speicher hochzuladen.
Set-AzureStorageBlobContent -Container containerName -File .\filename -Blob blobname
Weitere Informationen finden Sie unter http://msdn.Microsoft.com/de-de/library/dn408487.aspx .
Wenn Sie nach einem Werkzeug dafür suchen, schlage ich vor, dass Sie sich unser Tool Cloud Storage Studio ( http://www.cerebrata.com/Products/CloudStorageStudio ) ansehen. Es ist ein kommerzielles Tool zum Verwalten von Windows Azure Storage und gehosteten Diensten. Eine umfassende Liste der Windows Azure Storage Management-Tools finden Sie auch hier: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/17/windows-Azure-storage-explorers.aspx
Hoffe das hilft.
Der StorageClient hat dies eingebaut. Keine Notwendigkeit, wirklich etwas zu schreiben:
var account = new CloudStorageAccount(creds, false);
var client = account.CreateCloudBlobClient();
var blob = client.GetBlobReference("/somecontainer/hugefile.Zip");
//1MB seems to be a pretty good all purpose size
client.WriteBlockSizeInBytes = 1024;
//this sets # of parallel uploads for blocks
client.ParallelOperationThreadCount = 4; //normally set to one per CPU core
//this will break blobs up automatically after this size
client.SingleBlobUploadThresholdInBytes = 4096;
blob.UploadFile("somehugefile.Zip");
Es gibt ein neues OpenSource-Tool von Microsoft:
Bitte überprüfen Sie diese Links:
Ich verwende Cyberduck , um meinen Blob-Speicher zu verwalten.
Es ist kostenlos und sehr einfach zu bedienen. Es funktioniert auch mit anderen Cloud-Speicherlösungen.
Ich habe vor kurzem auch dieses gefunden: CloudXplorer
Ich hoffe es hilft.
Eine einfache Batch-Datei mit dem Microsoft-Dienstprogramm AzCopy
erledigt den Trick. Sie können Ihre Dateien per Drag & Drop in die folgende Batchdatei ziehen und in Ihren Blob-Speichercontainer hochladen:
upload.bat
@ECHO OFF
SET BLOB_URL=https://<<<account name>>>.blob.core.windows.net/<<<container name>>>
SET BLOB_KEY=<<<your access key>>>
:AGAIN
IF "%~1" == "" GOTO DONE
AzCopy /Source:"%~d1%~p1" /Dest:%BLOB_URL% /DestKey:%BLOB_KEY% /Pattern:"%~n1%~x1" /destType:blob
SHIFT
GOTO AGAIN
:DONE
PAUSE
Beachten Sie, dass bei der obigen Technik nur eine oder mehrere Dateien einzeln hochgeladen werden (da das Flag Pattern
angegeben ist), anstatt ein gesamtes Verzeichnis hochzuladen.
Sie können Cloud Combine für zuverlässigen und schnellen Dateiupload in den Azure-Blob-Speicher verwenden.
Sie können große Dateien direkt mit dem HTTP PUT-Verb direkt in den Azure Blob-Speicher hochladen. Die größte Datei, die ich mit dem folgenden Code ausprobiert habe, ist 4,6 GB. Sie können dies in C # folgendermaßen tun:
// write up to ChunkSize of data to the web request
void WriteToStreamCallback(IAsyncResult asynchronousResult)
{
var webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
var requestStream = webRequest.EndGetRequestStream(asynchronousResult);
var buffer = new Byte[4096];
int bytesRead;
var tempTotal = 0;
File.FileStream.Position = DataSent;
while ((bytesRead = File.FileStream.Read(buffer, 0, buffer.Length)) != 0
&& tempTotal + bytesRead < CHUNK_SIZE
&& !File.IsDeleted
&& File.State != Constants.FileStates.Error)
{
requestStream.Write(buffer, 0, bytesRead);
requestStream.Flush();
DataSent += bytesRead;
tempTotal += bytesRead;
File.UiDispatcher.BeginInvoke(OnProgressChanged);
}
requestStream.Close();
if (!AbortRequested) webRequest.BeginGetResponse(ReadHttpResponseCallback, webRequest);
}
void StartUpload()
{
var uriBuilder = new UriBuilder(UploadUrl);
if (UseBlocks)
{
// encode the block name and add it to the query string
CurrentBlockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()));
uriBuilder.Query = uriBuilder.Query.TrimStart('?') + string.Format("&comp=block&blockid={0}", CurrentBlockId);
}
// with or without using blocks, we'll make a PUT request with the data
var webRequest = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(uriBuilder.Uri);
webRequest.Method = "PUT";
webRequest.BeginGetRequestStream(WriteToStreamCallback, webRequest);
}
Die UploadUrl wird von Azure selbst generiert und enthält eine Shared Access-Signatur. Diese SAS - URL gibt an, wohin der Blob hochgeladen werden soll und wie lange der Sicherheitszugriff (in Ihrem Fall Schreibzugriff) gewährt wird. Sie können eine SAS -URL wie folgt generieren:
readonly CloudBlobClient BlobClient;
readonly CloudBlobContainer BlobContainer;
public UploadService()
{
// Setup the connection to Windows Azure Storage
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
BlobClient = storageAccount.CreateCloudBlobClient();
// Get and create the container
BlobContainer = BlobClient.GetContainerReference("publicfiles");
}
string JsonSerializeData(string url)
{
var serializer = new DataContractJsonSerializer(url.GetType());
var memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, url);
return Encoding.Default.GetString(memoryStream.ToArray());
}
public string GetUploadUrl()
{
var sasWithIdentifier = BlobContainer.GetSharedAccessSignature(new SharedAccessPolicy
{
Permissions = SharedAccessPermissions.Write,
SharedAccessExpiryTime =
DateTime.UtcNow.AddMinutes(60)
});
return JsonSerializeData(BlobContainer.Uri.AbsoluteUri + "/" + Guid.NewGuid() + sasWithIdentifier);
}
Ich habe auch einen Thread zum Thema, wo Sie weitere Informationen finden können. So laden Sie riesige Dateien von einer Webseite in den Azure-Blob hoch
Sie können Dateien mit der Eingabeaufforderung Command Prompt in Azure Storage Account Blob hochladen.
Installieren Sie Microsoft Azure Storage-Tools .
Und dann laden Sie es in Ihr Konto ein.
AzCopy /Source:"filepath" /Dest:bloburl /DestKey:accesskey /destType:blob
Ich hoffe es hilft.. :)
In der Vorschau des neuen Azure-Portals befindet sich in der Containeransicht eine Menüoption "Editor". Ermöglicht das direkte Hochladen einer Datei von der Portal-Benutzeroberfläche in den Container
Schauen Sie sich diesen Beitrag an Hochladen in Azure Storage Hier wird erklärt, wie Sie problemlos Dateien über PowerShell in Azure Blob Storage hochladen.
Sie können das Azcopy-Tool zum Hochladen der erforderlichen Dateien in den Azure-Standardspeicher verwenden
Syntax
AzCopy /Source : /Destination /s
Ich habe alle im Beitrag genannten Tools verwendet, und alle funktionieren gut mit Blockblobs. Mein Favorit ist jedoch BlobTransferUtility
Standardmäßig blockiert BlobTransferUtility nur Blobs. Wenn Sie jedoch nur 2 Zeilen Code ändern, können Sie auch Seitenblobs hochladen. Wenn Sie wie ich ein Image einer virtuellen Maschine hochladen müssen, muss es ein Seiten-Blob sein.
(für den Unterschied bitte siehe diesen MSDN-Artikel. )
Um Seitenblobs hochzuladen, ändern Sie einfach die Zeilen 53 und 62 von BlobTransferHelper.cs aus
new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
zu
new Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob
Die einzige andere Sache, die Sie über diese App wissen sollten, ist das Deaktivieren von HELP, wenn Sie das Programm zum ersten Mal ausführen, um die tatsächliche Benutzeroberfläche anzuzeigen.