如何获取ADLS Gen2中存储的文件的MD5?

时间:2019-04-11 01:48:53

标签: azure

我每天通过sFTP接收到ADLS第2代存储帐户的文件。我需要通过检查ADLS gen2中存储的文件的MD5来验证文件。

我尝试使用BLOB API,目前它不支持ADLS gen2。如果文件存储在Blob存储中,那么我可以从blob属性获取Content MD5。

有人可以帮助从ADLS第2代获取内容MD5吗?

1 个答案:

答案 0 :(得分:0)

到目前为止,您所知还不支持Blob api,但是您可以看一下Data Lake Storage Gen2 rest api-> Path - Get Properties,该文件可用于获取存储在ADLS Gen2中的文件的属性。

这是示例代码(请注意,我使用附加到api url的sas令牌):

using System;
using System.Net;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            string sasToken = "?sv=2018-03-28&ss=b&srt=sco&sp=rwdl&st=2019-04-15T08%3A07%3A49Z&se=2019-04-16T08%3A07%3A49Z&sig=xxxx";
            string url = "https://xxxx.dfs.core.windows.net/myfilesys1/app.JPG" + sasToken;
            var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
            req.Method = "HEAD";
            var res = (HttpWebResponse)req.GetResponse();

            Console.WriteLine("the status code is: "+res.StatusCode);

            var headers = res.Headers;
            Console.WriteLine("the count of the headers is: "+headers.Count);
            Console.WriteLine("*********");
            Console.WriteLine();

            //list all the properties if you don't know which correct format of property.
            foreach (var h in headers.Keys)
            {
                Console.WriteLine(h.ToString());
            }
            Console.WriteLine("*********");
            Console.WriteLine();

            //take the Content-Type property for example.
            var myheader = res.GetResponseHeader("Content-Type");
            Console.WriteLine($"the header Content-Type is: {myheader}");

            Console.ReadLine();
        }
    }
}

结果:

enter image description here

如果您不知道如何生成sas令牌,则可以导航至azure门户->您的存储帐户,然后按照以下屏幕截图进行操作:

enter image description here