标签: azure-blob-storage

对于小于 64 MB 的大小,CloudBlockBlob 的 UploadFromStream 函数是否具有原子性?

我正在从 BlockBlob 读取文件。文件大小保证小于 64 MB。因此它是单块操作。读取文件后,我更改了其中的某些部分,并通过 CloudBlockBlob 的 UploadFromStream 函数重新上传。我的问题是“对于小于 64 MB 的大小,CloudBlockBlob 的 UploadFromStream 函数是否是原子的?”。在写入过程中发生异常后,是否有可能在天蓝色存储上有损坏的文件?

注意:我对 AppendBlobs 提出了类似的问题,并得到了它是原子的答案。

atomic stream azure azure-blob-storage

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

Azure 存储帐户始终仅添加 Blob 存储,缺少表/队列/文件

每当我通过 Azure 门户创建新的存储(经典)帐户时,我总是会遇到根本不创建表/队列/文件存储的问题,使帐户仅保留 Blob 存储,如下所示:

在此输入图像描述

而不是像这样(单独的帐户):

在此输入图像描述

我已经尝试过多次,并且都得到了相同的结果。我不明白我怎么会犯这个错误,因为表单上只有 4 个选项来创建帐户,而且它们都不能管理帐户的内容。

当我尝试在这个新帐户中创建新表或队列时,出现错误502 Bad Gateway

我在这里错过了什么吗?谁能告诉我如何将所需的存储类型添加到帐户中。

azure azure-table-storage azure-blob-storage azureportal

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

如果更改,Azure UploadDirectoryAsync 不会覆盖现有文件

我正在使用 Microsoft.WindowsAzure.Storage.DataMovement 库进行目录上传,如下所示

     TransferManager.Configurations.ParallelOperations = 64;

         UploadDirectoryOptions options = new UploadDirectoryOptions()
                    {                              
                        ContentType = "image/jpeg",
                        Recursive = true,                   

                    };


    context.FileTransferred += FileTransferredCallback;
    context.FileFailed += FileFailedCallback;
    context.FileSkipped += FileSkippedCallback;


    await TransferManager.UploadDirectoryAsync(sourceDir, destDir, options:
 options, context: context, cancellationToken: cts.Token);
Run Code Online (Sandbox Code Playgroud)

我认识到,如果我更改了同名的图像,函数将忽略该图像并在文件存在时返回异常。如果 datemodified 更改,如何替换图像?首先,我本地电脑上的 datemodified 和 azure 应该同步。

c# azure-storage azure-blob-storage

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

无法加载 DLL jvm.dll 找不到指定的模块 Azure 数据工厂 V2 错误

我们正在尝试将数据从本地 SQL Server 复制到 Azure Blob 存储。但我们面临以下错误:

活动 Copy_741 失败:“接收器”端发生故障。ErrorCode=UserErrorJreNotFound,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=找不到 Java 运行时环境。,Source=Microsoft.DataTransfer.Common,''Type=System.DllNotFoundException,Message=无法加载 DLL “jvm.dll”:找不到指定的模块。(HRESULT 异常:0x8007007E),Source=Microsoft.DataTransfer.Richfile.HiveOrcBridge,'

在其他一些帖子中,我们发现需要在 Integration Runtime 节点上安装 Microsoft Visual C++ 2010 Redistributable Package,但最新版本已经安装。

我们正在使用 Azure 数据工厂 v2。此外,我们能够毫无问题地将数据从 Azure SQL Server 传输到 Blob

azure azure-data-factory azure-blob-storage

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

通过 .Net Web api 从 azure blob 下载文档

我很难弄清楚出了什么问题。我的应用程序访问 api 来获取文档。发生的情况是下载开始,但挂起。最终它会完成(要么有错误,要么完全完成),但是当我尝试打开 pdf 时,我收到“无法打开 pdf”或类似的信息。它在本地工作。

我的控制器:

 [Route("api/listing/attachment")]
    [HttpGet]
    public async Task<IHttpActionResult> GetAttachmentAsync(string fileName)
    {
        var attachment = await _repository.GetAttachmentAsync(fileName);
        var response = HttpContext.Current.Response;
        response.Clear();
        response.ContentType = "application/x-download";
        var removePath = fileName.Substring(fileName.IndexOf("/", fileName.IndexOf("/", StringComparison.Ordinal) + 1, StringComparison.Ordinal) + 1);
        response.AddHeader("content-disposition", string.Format("attachment; filename={0}", removePath));
        response.AddHeader("content-length", attachment.Length.ToString());
        response.BinaryWrite(attachment);
        response.Flush();
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

我的存储库:

public async Task<byte[]> GetAttachmentAsync(string fileName)
    {
        var container = _blobClient.GetContainerReference(_containerName);
        var blockBlob = container.GetBlockBlobReference(fileName);
        using (var memoryStream = new MemoryStream())
        {
            await blockBlob.DownloadToStreamAsync(memoryStream);
            return memoryStream.ToArray();
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# asynchronous asp.net-web-api azure-blob-storage

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

用于在 blob 容器内创建子目录并向其中插入一些数据的 PowerShell 脚本

我有多个 Azure 存储帐户。我想在 Azure 存储 blob 容器内创建文件夹结构,并使用 PowerShell 向其中插入一些数据。

那么,任何人都可以建议我如何编写 PowerShell 脚本来在 blob 容器内创建子目录并向其中插入一些数据。

powershell azure azure-storage azure-blob-storage

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

尝试删除 Azure blob - 获取 blob 不存在异常

我有一个带有 blob (/images/filename) 的 Azure 存储容器。文件名(uri)在创建时存储在数据库中,来自文件上传保存函数:

        blob.UploadFromStream(filestream);
        string uri = blob.Uri.AbsoluteUri;
        return uri;
Run Code Online (Sandbox Code Playgroud)

文件上传工作正常,当使用 SAS 密钥下载传递到客户端时也工作正常。

来删除图像我有一个辅助函数,该函数取自此处的 MS 示例:MS Github 示例 这是该函数:

    internal bool DeleteFile(string fileURI)
    {
        try
        {
            Uri uri = new Uri(fileURI);
            string filename = Path.GetFileName(uri.LocalPath);
            CloudBlockBlob fileblob = container.GetBlockBlobReference(filename);
            fileblob.Delete();
            bool res = fileblob.DeleteIfExists();
            return res; //Ok
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex);
            return false;
        }

    }
Run Code Online (Sandbox Code Playgroud)

这一切都在一个助手类中,该类的开头如下:

public class AzureHelpers
{
    private string connection;
    private CloudStorageAccount storageAccount;
    private CloudBlobClient blobClient;
    private CloudBlobContainer container;


    public AzureHelpers()
    { …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-blob-storage

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

如何将 Azure 托管标识与 Azure.Storage.Blobs.BlobServiceClient 结合使用?

v11 SDK for .NET中,我能够使用托管身份令牌来访问 Azure blob:

var token = await new AzureServiceTokenProvider().GetAccessTokenAsync("https://storage.azure.com/");
var tokenCredential = new TokenCredential(token);
var storageCredentials = new StorageCredentials(tokenCredential);
var blob = new CloudBlobContainer(new Uri("https://some_storage.blob.core.windows.net/some_container"), storageCredentials);
Run Code Online (Sandbox Code Playgroud)

现在我想切换到v12 SDK,但不明白如何对BlobServiceClient.

c# azure azure-blob-storage

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

想要使用客户端证书将文件推送到 Azure 存储以进行身份​​验证

我已经创建了 Azure blob 存储,现在我想将文件推送到存储以进行身份​​验证,需要使用客户端证书。

知道怎么做吗?

azure azure-storage azure-storage-files azure-blob-storage

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

How do properly stream a video using partial content ranges from Azure blob storage?

我有一个 mp4 视频,已上传到 Azure Blob 存储(块、存储 v2)。我无法使用<video>标签提供视频而不会出现播放延迟,因为视频已从服务器完全下载(带有 200 响应状态代码)。

(更糟糕的是,虽然与我的问题不完全相关,因为我认为这更多是浏览器问题,但视频设置为循环,并且每次循环都会重新下载。)

相反,我想使用部分内容范围来流式传输视频,以便立即开始播放。

我尝试直接获取视频,为<video>标签src属性提供绝对 URI;我还尝试通过 ASP .NET Core 3.1 控制器方法提供视频,返回 aFileStreamResult并将enableRangeProcessing参数设置为true. 这是该代码:

public async Task<IActionResult> GetVideo(string videoUrl)
{
    var httpClient = new HttpClient();
    var stream = await httpClient.GetStreamAsync(videoUrl);
    return File(stream, new MediaTypeHeaderValue("video/mp4").MediaType, true);
}
Run Code Online (Sandbox Code Playgroud)

似乎无论我尝试什么,我都无法获得带有 206 状态代码的范围响应。我已经看到了有关使用 Azure 媒体服务的建议,但这似乎有点矫枉过正,这应该是只需支持而无需合并其他服务的东西。

任何帮助/建议将不胜感激 - 谢谢!

c# video-streaming html5-video azure-blob-storage asp.net-core-3.1

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