0

我使用 Azure Data Lake Gen2 作为存储。在将文件上传到相关文件夹之前,我需要创建不同的文件夹结构。

我正在使用“Azure-Storage”javascript 库。但我无法弄清楚如何通过这个库在容器内创建一个文件夹。

下面是连接到容器的代码。我能够连接到容器并将文件上传到容器本身。

var azure = require('azure-storage'); //connecting to container
var blobService = azure.createBlobService("DefaultEndpointsProtocol=<>;EndpointSuffix=core.windows.net");
blobService.createContainerIfNotExists("pbitestdl2",{publicAccessLevel: 'blob'},(error, result, response) => {
    if (!error) {
        console.log('connected');
    }
});

在此处输入图像描述

4

1 回答 1

2

如您所知,ADLS Gen2 的官方 SDK 目前不可用。

由于您使用的是 ADLS Gen2 的 blob 存储 sdk,因此您应该知道以下几点:

在 azure blob 存储中,您需要知道一件事:blob 存储中没有“文件夹”,“文件夹”实际上是 blob 名称的一部分。您不能在 Blob 存储中创建空文件夹。

使用 ADLS Gen2 的 blob 存储 SDK 时,不能直接创建文件夹,您应该创建一个名称包含文件夹名称的 blob 文件,例如myfolder/my.txt.

因此,在使用 ADLS Gen2 的 blob 存储 SDK 时,应使用以下代码:

var azure = require('azure-storage'); //connecting to container
var blobService = azure.createBlobService("DefaultEndpointsProtocol=xxx;EndpointSuffix=core.windows.net");
blobService.createContainerIfNotExists("pbitestdl2",{publicAccessLevel: 'blob'},(error, result, response) => {
    if (!error) {
        console.log('connected');
    }
});

blobService.createBlockBlobFromLocalFile('pbitestdl2', 'myfolder/my.txt', 'f:\\testfile.txt', function(error, result, response) {
    if (!error) {
      // file uploaded
      console.log('ok, uploaded');
    }
  });

然后您可以看到该文件夹​​是在 Azure Data Lake Gen2 存储中创建的,截图如下:

在此处输入图像描述

另一种方式,您可以使用 ADLS Gen2 Path - Create rest api 直接创建文件夹,但是您需要做很多工作来为 rest api 构建身份验证令牌。

于 2019-11-14T01:16:10.933 回答