azure 上传超过2 GB的大型文件,最好的方法是什么?

dgenwo3n  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(105)

我想上传超过2 GB的大型文件到Azure数据湖/ blob存储。
我尝试使用Azure的云Blob方法PutBlockListAsync。参考:https://www.andrewhoefling.com/Blog/Post/uploading-large-files-to-azure-blob-storage-in-c-sharp
我会和grpc核实一下。
我可以尝试哪些不同的方法来提高性能,同时上传这么大的文件?-使用块上传-缓冲上传-GRPC -AZCopy -任何其他技术或混合技术

oxcyiej7

oxcyiej71#

您可以使用**Azure data movement library**将较大的文件上载到文件共享或Blob存储。

  • 我在自己的环境中尝试,得到以下结果:*
    代码:
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using Microsoft.Azure.Storage.DataMovement;

class program
{
    public static void Main(string[] args)
    {
        string storageConnectionString = "<Connection string>";
        CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);
        CloudBlobClient blobClient = account.CreateCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.GetContainerReference("test");
        blobContainer.CreateIfNotExists();
        string sourceBlob = @"C:\Users\download\sample.docx";
        CloudBlockBlob destPath = blobContainer.GetBlockBlobReference("sample.docx");
        TransferManager.Configurations.ParallelOperations = 64;
        // Setup the transfer context and track the download progress
        SingleTransferContext context = new SingleTransferContext
        {
            ProgressHandler = new Progress<TransferStatus>(progress =>
            {
                Console.WriteLine("Bytes Upload: {0}", progress.BytesTransferred);
            })
        };
        // upload the blob
        var task = TransferManager.UploadAsync(
        sourceBlob, destPath, null, context, CancellationToken.None);
        task.Wait();
    }
}

为了解决这个问题,我用上面的代码上传了一个100 MB的文件,你也可以使用Nour所说的**chunk uploads and GRPC**方法。

控制台:

门户网站:

您也可以使用**Azcopy**将大型文件上载到数据库存储中。

相关问题