• D365 FO操作Azure Blob


     在AZure里,一般用Azure Blob做数据传输的中间媒介,D365 FO的数据生成到Blob里,其他系统从Blob里获取,或者相反,这样就不用单独设置FTP服务器了,当然这个是要钱的。
    要想使用Blob,需要在AZure上创建存储账号,创建好存储账户以后,就可以设置访问密钥了。

     .NET提供了读写Azure里的类库,读写AZure Blob非常方便,访问只需要一个连接字符串做认证就可以了,用C#简单封装了一下访问的类库供D365 FO调用。

     1 public class AZureBlobHelper
     2     {
     3         CloudBlobContainer blobContainer;
     4         string path;
     5 
     6         public AZureBlobHelper(
     7             string _connectionString,
     8             string _containerName,
     9             string _path)
    10         {            
    11             blobContainer = CloudStorageAccount.Parse(_connectionString)
    12                                                 .CreateCloudBlobClient()
    13                                                 .GetContainerReference(_containerName);
    14 
    15             if (_path != string.Empty && _path.EndsWith("/") == false)
    16             {
    17                 path = _path + "/";
    18             }
    19             else
    20             {
    21                 path = _path;
    22             }
    23         }
    24         public bool upload(MemoryStream _stream, string _fileName)
    25         {            
    26             CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(path + _fileName);
    27             blockBlob.UploadFromStream(_stream, null, null, null);
    28             return true;
    29         }
    30         
    31         public string[] getFileList()
    32         {
    33             List<string> list = new List<string>();
    34             CloudBlobDirectory direcotry =  blobContainer.GetDirectoryReference(path);
    35             foreach(var file in direcotry.ListBlobs())
    36             {
    37                 string fileName = file.Uri.Segments[file.Uri.Segments.Length - 1];
    38                 list.Add(fileName);
    39             }
    40             return list.ToArray();
    41         }
    42         public MemoryStream download(string _fileName)
    43         {
    44             MemoryStream ms = new MemoryStream();
    45             CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(path + _fileName);            
    46             blockBlob.DownloadToStream(ms);            
    47             return ms;
    48         }
    49         public void delete(string _fileName)
    50         {
    51             CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(path + _fileName);
    52             blockBlob.Delete();
    53         }
    54     }
  • 相关阅读:
    web框架开发-Django模型层(1)之ORM简介和单表操作
    web框架开发-模板层
    生产者-消费者模式
    不变模式
    SynchronousQueue
    ThreadLocal
    锁的优化以及Java虚拟机对锁优化所做的努力
    随机数据结构:跳表(SkipList)
    数据共享通道:BlockingQueue
    CopyOnWriteArrayList
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/13175374.html
Copyright © 2020-2023  润新知