如何仅使用c#在Azure文件服务中将大文件作为块上传?

时间:2018-02-01 04:45:25

标签: c# azure-media-services chunks

我试图将文件上传到azure媒体服务(控制台应用程序),如果文件大小较少,我可以使用普通上传方法,如下所示

static public IAsset CreateAssetAndUploadSingleFile(AssetCreationOptions assetCreationOptions, string singleFilePath)
    {
        if (!File.Exists(singleFilePath))
        {
            Console.WriteLine("File does not exist.");
            return null;
        }

        var assetName = Path.GetFileNameWithoutExtension(singleFilePath);
        IAsset inputAsset = _context.Assets.Create(assetName, assetCreationOptions);

        var assetFile = inputAsset.AssetFiles.Create(Path.GetFileName(singleFilePath));

        Console.WriteLine("Upload {0}", assetFile.Name);

        assetFile.Upload(singleFilePath);
        Console.WriteLine("Done uploading {0}", assetFile.Name);

        return inputAsset;
    }

这会将文件上传到azure媒体服务,但是如果文件太大,想要将其拆分成块并需要上传,我应该做些什么改变才能实现这一目的只使用c#。

我已经看到一个链接,使用javascript(我不知道)gaurav's link来解释这个。我怎么能用c#实现类似的呢。

请帮忙。

2 个答案:

答案 0 :(得分:0)

您已经看过这篇文章吗? https://docs.microsoft.com/en-us/azure/media-services/media-services-dotnet-upload-files#upload-multiple-files-with-media-services-net-sdk

查看有关上传多个文件的部分。它允许您调整SDK内置的BobTransferClient使用的线程数

 var blobTransferClient = new BlobTransferClient();
        blobTransferClient.NumberOfConcurrentTransfers = 20;
        blobTransferClient.ParallelTransferThreadCount = 20;

答案 1 :(得分:0)

另一种选择还可以是将SAS URL直接上传到Blob存储中的容器中,然后使用Azure Storage Net Data移动库作为AzCopy工具的底层组件。这允许您完全控制并行上传,块大小,并发线程等。为您提供所有功能和旋钮!

https://github.com/Azure/azure-storage-net-data-movement