Dynamics 365(AX 7) – Azure Blob Storage Veri Yazma(Url oluşturma)

19 Haz

Merhaba arkadaşlar,
Bugün sizlerle D365 || Ax 7 ile kullanabileceğimiz Ax yazılımcıları için yeni bir özellik olan Azure Blob Storage özelliğini nasıl kullanırız, anlatmaya çalışacağım.

Ax 7 ile birlikte artık verilerimiz Azure ortamında yani bulutta olduğu için bazı dosyalarımızı dışarıya açıp, url oluşturup indirebilme gibi özellikleri kullanabilmemiz sağlanıyor.

Örneğin; Serverda dizine yazdığımız bir pdf dosyasını herkesle paylaşmak için link oluşturup paylaşabiliriz.
Linkin aktif kalma süresini belirtebiliyoruz. Mesela 30 gün sonra bu linke erişim kaldırılsın ve ulaşılamasın gibi kriterler belirtebiliyoruz.

Bu bilgilerden sonra kod işlemlerine geçiyorum.
Aşağıda ki job ile herhangi bir dosyayı Azure Storage yazıp paylaşabilirsiniz.

Bu örnekte ben 10 gün süre belirtim.

uploadedBlobInfo tanımının yapıldığı yerde görebilirsiniz.

class SemBlobStorageTestJob
{      
    /// <summary>
    /// Runs the class with the specified arguments.
    /// </summary>
    /// <param name = "_args">The specified arguments.</param>
    public static void main(Args _args)
    {
        str                 fileId;
        str                 downloadUrl;
        System.IO.Stream    _stream;
        str                 _fileName  = "TestSemihData.txt";
        str                 _filePath  = @"C:\Windows\Temp\testSemih.txt";
        str                 fileNameAZ = strFmt('%1/%2', fileId, _fileName);//filename = Filename.Xlsx
        guid                fileGuid   = newGuid();
        ;

        fileId  = guid2str(fileGuid);
        _stream = File::UseFileFromURL(_filePath);//filepath = C://Temp//Filename.Xlsx

        var blobInfo = new Microsoft.DynamicsOnline.Infrastructure.Components.SharedServiceUnitStorage.SharedServiceUnitStorageData();

        blobInfo.Id = fileId;
        blobInfo.Category = "StorageFolder";//Folder name
        blobInfo.Name = fileNameAZ;
        blobInfo.Accessibility =  Microsoft.DynamicsOnline.Infrastructure.Components.SharedServiceUnitStorage.Accessibility::Private;
        blobInfo.Retention = Microsoft.DynamicsOnline.Infrastructure.Components.SharedServiceUnitStorage.Retention::Permanent;

        if (_stream.CanSeek)
        {
            _stream.Seek(0, System.IO.SeekOrigin::Begin);
        }

        var blobStorageService = new Microsoft.DynamicsOnline.Infrastructure.Components.SharedServiceUnitStorage.SharedServiceUnitStorage(Microsoft.DynamicsOnline.Infrastructure.Components.SharedServiceUnitStorage.SharedServiceUnitStorage::GetDefaultStorageContext());
        blobStorageService.UploadData(blobInfo, _stream);

        var uploadedBlobInfo = blobStorageService.GetData(fileId,
                                                          "StorageFolder",
                                                          Microsoft.DynamicsOnline.Infrastructure.Components.SharedServiceUnitStorage.BlobUrlPermission::Read,
                                                          System.TimeSpan::FromDays(10));

        //Time span for keeping the file at azure location.
        downloadUrl = uploadedBlobInfo.BlobLink;

        info(strFmt("Dosya yüklendi. Link : %1", downloadUrl));
    }

}

Ekran çıktısı;

Oluşan URL’yi tarayıcıya yapıştırıp giderek, dosyayı download edebiliyoruz.

Bir başka yazımda görüşmek üzere, iyi çalışmalar.

Bir Cevap Yazın