windows - servidor - portal azure
¿Cómo puedo cargar algún archivo en Azure blob storage sin escribir mi propio programa? (15)
Consulte esta publicación Subida a Azure Storage, donde se explica cómo cargar fácilmente cualquier archivo a través de PowerShell a Azure Blob Storage.
Creé una cuenta de Azure Storage. Tengo un archivo .zip de 400 megabytes que quiero poner en almacenamiento de blobs para su uso posterior.
¿Cómo puedo hacer eso sin escribir código? ¿Hay alguna interfaz para eso?
El nuevo Azure Portal tiene una opción de menú ''Editor'' en la vista previa cuando está en la vista de contenedor. Le permite subir un archivo directamente al contenedor desde la interfaz de usuario del Portal
Hay una nueva herramienta OpenSource proporcionada por Microsoft:
- Proyecto Deco - Crossplatform Microsoft Azure Storage Account Explorer.
Por favor, revisa esos enlaces:
- Descargar binarios: http://storageexplorer.com/
- Código fuente: https://github.com/Azure/deco
He usado todas las herramientas mencionadas en la publicación, y todo funciona moderadamente bien con bloqueos. Sin embargo, mi favorito es BlobTransferUtility
Por defecto, BlobTransferUtility solo bloquea blobs. Sin embargo, cambiar solo 2 líneas de código y también puede cargar blobs de página. Si usted, como yo, necesita cargar una imagen de máquina virtual, debe ser un blob de página.
(Para la diferencia, consulte este artículo de MSDN ) .
Para cargar blobs de página simplemente cambie las líneas 53 y 62 de BlobTransferHelper.cs desde
new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
a
new Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob
La única otra cosa que debes saber sobre esta aplicación es desmarcar HELP cuando ejecutas el programa por primera vez para ver la UI real.
Herramientas gratuitas:
- Visual Studio 2010: instala herramientas de Azure y puedes encontrar los blobs en Server Explorer
- CloudBerry Explorer de Cloud Berry Lab para Azure Blob Storage
- ClumpsyLeaf CloudXplorer
- Azure Storage Explorer de CodePlex (prueba la versión 4 beta)
Había un programa antiguo llamado Azure Blob Explorer o algo que ya no funciona con el nuevo SDK de Azure.
Fuera de estos, personalmente me gusta CloudBerry Explorer lo mejor.
La forma más fácil es usar Azure Storage PowerShell. Proporcionó muchos comandos para administrar su contenedor de almacenamiento / blob / table / queue.
Para su caso mencionado, podría usar Set-AzureStorageBlobContent, que podría cargar un archivo local en almacenamiento azul como blob de bloque o blob de página.
Set-AzureStorageBlobContent -Container containerName -File ./filename -Blob blobname
Para más detalles, consulte http://msdn.microsoft.com/en-us/library/dn408487.aspx .
Pruebe la Blob Service API
http://msdn.microsoft.com/en-us/library/dd135733.aspx
Sin embargo, 400mb es un archivo grande y no estoy seguro de que una sola llamada API trate con algo de este tamaño, es posible que deba dividirlo y reconstruirlo con un código personalizado.
Puede cargar archivos en Blob de cuenta de almacenamiento de Azure usando el símbolo del sistema .
Instale las herramientas de almacenamiento de Microsoft Azure .
Y luego subirlo a su cuenta blob comando CLI:
AzCopy /Source:"filepath" /Dest:bloburl /DestKey:accesskey /destType:blob
Espero eso ayude.. :)
Puede cargar archivos grandes directamente en Azure Blob Storage directamente usando el verbo HTTP PUT, el archivo más grande que he probado con el siguiente código es 4,6 Gb. Puedes hacer esto en C # así:
// 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);
}
UploadUrl es generado por Azure y contiene una Firma de acceso compartido, esta URL de SAS indica dónde se cargará el blob y el tiempo de acceso de seguridad (acceso de escritura en su caso). Puede generar una URL SAS como esta:
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);
}
También tengo un hilo sobre el tema donde puedes encontrar más información aquí Cómo subir archivos enormes al blob de Azure desde una página web
Puede usar Cloud Combine para cargar archivos de manera confiable y rápida en Azure blob storage.
Puede usar la herramienta Azcopy para cargar los archivos necesarios en el almacenamiento predeterminado de Azure. Blob Blob puede cambiar el patrón de acuerdo con su requerimiento
Sintaxis
AzCopy /Source : /Destination /s
Si está buscando una herramienta para hacerlo, le sugiero que eche un vistazo a nuestra herramienta Cloud Storage Studio ( http://www.cerebrata.com/Products/CloudStorageStudio ). Es una herramienta comercial para administrar Windows Azure Storage y Hosted Service. También puede encontrar una lista completa de herramientas de administración de almacenamiento de Windows Azure aquí: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/17/windows-azure-storage-explorers.aspx
Espero que esto ayude.
StorageClient tiene esto incorporado. No es necesario escribir realmente nada:
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");
Un simple archivo por lotes utilizando la utilidad AzCopy
de Microsoft hará el truco. Puede arrastrar y soltar sus archivos en el siguiente archivo por lotes para cargarlos en su contenedor de almacenamiento blob:
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
Tenga en cuenta que la técnica anterior solo carga uno o más archivos individualmente (ya que se especifica el indicador de Pattern
) en lugar de cargar un directorio completo.
Uso Cyberduck para administrar mi almacenamiento blob.
Es gratis y muy fácil de usar. También funciona con otras soluciones de almacenamiento en la nube.
Recientemente encontré este: CloudXplorer
Espero eso ayude.