标签: azure-storage-blobs

使用共享访问密钥上载到Azure Blob存储

UPD:这是我实现的这个问题的解决方案

我正在尝试通过Azure.Storage库(不是REST API)上传到Azure blob存储,并通过共享访问密钥进行身份验证.

我看过这篇博文,但是自帖子以来API已经发生了变化,现在我无法得到相同的结果.

这是我有的:

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);
}
Run Code Online (Sandbox Code Playgroud)

有:

blobWithSas.BaseUri= http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24(Guid是容器的名称,已存在,在其他地方创建.)

blobWithSas.Sas= ?sv=2012-02-12&se=2013-06-23T03%3A04%3A53Z&sr=b&sp=w&sig=NaMqgXRMXDFvLAp8LTskgplAKp%2B9LCZzq8WK9Zo35x8%3D(也在代码中的其他地方发布)

blobWithSas.AbsoluteUri = http://127.0.0.1:10000/devstoreaccount1/a6dc9274-6ce1-4095-be6b-e84d1012cb24/foldername/filename.txt

blob不存在,我想上传新文件并创建一个blob.我有"服务器"应用程序持有Azure存储帐户的访问密钥.服务器将向客户端发出SAS,客户端将文件直接上载到Azure.所以SAS只会写,没有阅读,客户端将创建服务器告诉他们的文件(容器,文件夹名称)

问题出现了GetBlobReferenceFromServer- 我从Azure存储中收到404错误.是的,blob不存在且没有引用.因此,给定CloudBlobClient,如何将文件上传到blob?

ps我意识到这些东西有REST API.但我之前使用过Microsoft.WindowsAzure.Storage库,如果可能的话,我希望避免使用REST服务.

c# azure azure-storage azure-storage-blobs

14
推荐指数
1
解决办法
1万
查看次数

使用blob存储配置和监视log4net

我们使用log4net和自定义appender来记录我们从azure机器到table store的东西,这很好用.我们现在需要的是使用blob-store在一个地方配置我们所有实例的日志记录,并且能够在运行时修改它,只需修改blob存储中的配置文件,不久之后我的所有机器都应该知道这个更改.

简单地说我需要的是:

XmlConfigurator.Configure(Uri blobStoreUri, bool watch=true)
Run Code Online (Sandbox Code Playgroud)

甚至更好:

XmlConfigurator.ConfigureAndWatch(string blobStoreUrl, TimeSpan refreshInterval)
Run Code Online (Sandbox Code Playgroud)

我用Google搜索,但却找不到那样的东西.实现这个的最佳方法是什么,或者你知道任何类似的实现吗?

谢谢almir

log4net azure azure-storage-blobs log4net-configuration

13
推荐指数
1
解决办法
900
查看次数

无法上传到azure Blob存储:远程服务器返回错误:(400)错误请求

我正在尝试创建一个实用程序来从Internet下载文件并将其再次上载到Azure blob存储.Blob容器已经很好了; 但由于某种原因,当我试图将文件上传到存储时,我收到"Bad Request 400"异常...容器名称已创建,小写字母,所以特殊字符.但我仍然不知道为什么我会得到例外!

请帮忙.

注意:

  • 我没有使用任何模拟器......直接在云上测试.
  • 我的所有容器都有"公共容器"访问选项.

这是一个例外:

An exception of type 'Microsoft.WindowsAzure.Storage.StorageException' 
occurred in Microsoft.WindowsAzure.Storage.dll but was not handled in user code
Additional information: The remote server returned an error: (400) Bad Request.
Run Code Online (Sandbox Code Playgroud)

以下是代码:

foreach (var obj in objectsList)
{
     var containerName = obj.id.Replace("\"", "").Replace("_", "").Trim();
     CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName);

     if (blobContainer.Exists())
     {
         var fileNamesArr = obj.fileNames.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);

         foreach (var sora in fileNamesArr)
         {
             int soraInt = int.Parse(sora.Replace("\"", ""));
             String fileName = …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-storage azure-storage-blobs

13
推荐指数
2
解决办法
2万
查看次数

如何删除Microsoft Azure存储中的租用blob

我在Azure中创建了一个虚拟机,然后将其删除.但是,关联的存储帐户仍然存在.我无法删除存储帐户,因为它包含一个容器,其中包含一个具有无限期租约的blob.
没有其他人使用此存储帐户.
我该如何删除这个blob?

azure azure-storage azure-storage-blobs

13
推荐指数
1
解决办法
1895
查看次数

通过ARM模板创建Azure blob/fileshare容器

我正在寻找一种通过ARM模板在Azure blob和文件共享存储中创建容器的方法.

目前我有ARM模板来配置存储帐户,但我想在ARM中创建容器.

{
    "name": "[parameters('storageAccountName')]",
    "type": "Microsoft.Storage/storageAccounts",
    "location": "[resourceGroup().location]",
    "apiVersion": "[variables('storageApiVersion')]",
    "sku": {
        "name": "[variables('storageAccountType')]"
    },
    "dependsOn": [ ],
    "tags": {
      "Environment": "[parameters('Environment')]",
      "Project": "[parameters('ProjectName')]",
      "Contact": "[parameters('ContactName')]"
    },
    "kind": "Storage",
    "properties": {
      "encryption": {
        "keySource": "Microsoft.Storage",
        "services": {
              "blob": {
                "enabled": true
              }
        }
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

azure azure-storage azure-storage-blobs azure-resource-manager azure-storage-files

13
推荐指数
2
解决办法
5985
查看次数

有关如何检查Azure的blob存储是否存在病毒的任何想法?

我们的应用程序将从客户上传的文件存储到blob存储.这些文件在不同方(我们的客户及其供应商)之间交换.有没有办法检查上传的文件是否有病毒?反恶意软件服务似乎只是检查虚拟机,但我无法获得有关使用它来检查文件即服务的任何信息.

一个很好的解决方案是,如果我们可以将这样的文件存储在Azure存储中作为"保留"文件,直到它被检查.然后我们需要一个服务来检查这个文件并返回结果.如果该文件没有病毒,我们可以将其移动到最终目的地.

azure azure-storage-blobs

13
推荐指数
1
解决办法
6784
查看次数

Azure blob存储限​​制和过滤器

适用于多租户应用程序的Azure存储.我们正在开发Azure上的多租户应用程序,每个租户需要大约10,000个租户和大约100 GB到1 TB的数据存储.该应用程序将分别维护文档和二进制内容以及每个租户的元数据.我们正在考虑使用Azure Block Blob存储来存储数据.因为,要求是为每个租户分开数据,我们遇到了以下方法.

  • 为每个租户创建一个单独的存储帐户
  • 这有助于保持使用租户明智,这也有助于计费
  • 在每个存储帐户中创建一个单独的容器,以根据类别进行隔离
  • 将文档与元数据一起存储在块blob存储中.

我们对我们的方法有以下疑问:

  1. 将块blob中的文档或二进制内容与元数据一起存储是一个好主意吗?或者有没有更好的方法来实现它(可能使用SQL Azure用于元数据和blob用于内容,或更好)?
  2. 如何使用元数据上的某些过滤条件查询数据?即检索metadat1 = value1和metadata2 = value2的所有blob
  3. 为每个租户创建一个单独的存储帐户是个好主意吗?
    一个.如果没有,那么我们可以在Azure存储和应用程序中存储租户特定数据的模型可以有效地使用它们吗?
  4. 在可扩展性和高可用性的背景下,Blob存储上读取/写入数据的请求数量是否存在带宽或任何其他限制?
  5. 根据天蓝色定价模型,他们对存储充电,即首先1 TB $ 0.095/GB,接下来49 TB $ 0.08/GB.此费用是针对每个存储帐户还是针对每个订阅的应用程序?
    一个.同样,交易成本适用于每个存储帐户或每个订阅?

azure azure-storage azure-storage-blobs

12
推荐指数
1
解决办法
7440
查看次数

使用.NET 4.5异步将Azure blob异步下载到字符串,等待

我正在尝试使用.NET 4.5异步和等待实现完全异步的 blob下载.

让我们假设整个blob可以立即适应内存,我们想把它保存在一个string.

码:

public async Task<string> DownloadTextAsync(ICloudBlob blob)
{
    using (Stream memoryStream = new MemoryStream())
    {
        IAsyncResult asyncResult = blob.BeginDownloadToStream(memoryStream, null, null);
        await Task.Factory.FromAsync(asyncResult, (r) => { blob.EndDownloadToStream(r); });
        memoryStream.Position = 0;

        using (StreamReader streamReader = new StreamReader(memoryStream))
        {
            // is this good enough?
            return streamReader.ReadToEnd();

            // or do we need this?
            return await streamReader.ReadToEndAsync();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageAccountConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("container1");
CloudBlockBlob blockBlob = container.GetBlockBlobReference("blob1.txt"); …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-storage-blobs async-await .net-4.5

12
推荐指数
1
解决办法
9528
查看次数

使用Node将上载的文件流式传输到Azure blob存储

使用Express with Node,我可以成功上传文件并将其传递到以下代码块中的Azure存储.

app.get('/upload', function (req, res) {
    res.send(
    '<form action="/upload" method="post" enctype="multipart/form-data">' +
    '<input type="file" name="snapshot" />' +
    '<input type="submit" value="Upload" />' +
    '</form>'
    );
});

app.post('/upload', function (req, res) {
    var path = req.files.snapshot.path;
    var bs= azure.createBlobService();
    bs.createBlockBlobFromFile('c', 'test.png', path, function (error) { });
    res.send("OK");
});
Run Code Online (Sandbox Code Playgroud)

这很好用,但Express会创建一个临时文件并先存储图像,然后我从文件中将其上传到Azure.这似乎是一个低效且不必要的步骤,我最终必须管理临时文件目录的清理.

我应该能够使用blobService.createBlockBlobFromStreamAzure SDK中的方法将文件直接流式传输到Azure存储,但我不熟悉Node或Express以了解如何访问流数据.

app.post('/upload', function (req, res) {

    var stream = /// WHAT GOES HERE ?? ///

    var bs= azure.createBlobService();
    bs.createBlockBlobFromStream('c', 'test.png', stream, function (error) { });
    res.send("OK");
});
Run Code Online (Sandbox Code Playgroud)

我发现以下博客表明可能有办法这样做,当然Express也会抓取流数据并解析并将其保存到文件系统中. …

azure azure-storage-blobs node.js express

12
推荐指数
2
解决办法
1万
查看次数

Azure Blob存储URL:WASB:// vs HTTP://

我看到有不同种类的URL来访问blob存储,如下所示:

wasb://XXXXXXXXXX@XXXXX.blob.core.windows.net

https://XXXXXXXXXX@XXXXX.blob.core.windows.net
Run Code Online (Sandbox Code Playgroud)

有什么不同?可能是差异的原因是什么?

azure azure-storage azure-storage-blobs

12
推荐指数
2
解决办法
9699
查看次数