代码之家  ›  专栏  ›  技术社区  ›  Fariha Abbasi

如何通过Typescript REST调用将文件上载到Azure Data Lake

  •  0
  • Fariha Abbasi  · 技术社区  · 8 年前

    我的问题是仅使用Typescript将文件从本地目录上载到Azure Data Lake存储。然后,我找到了非常有用的REST API解决方案,我通过postman测试了REST API以执行所有必需的操作,它们工作得很好,然后我转到Typescript以从Typescript进行这些调用。以下是链接: https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-data-operations-rest-api

    通过我使用的Typescript进行REST调用 请求承诺 软件包,我使用 npm安装请求承诺 命令该软件包的文档在以下链接中提供:- https://github.com/request/request

    但我能够执行REST API的所有操作,即:;服务到服务身份验证、创建文件夹、列出文件夹、重命名文件、读取文件等。但我无法执行两个操作/REST调用,即:; 上传文件和删除文件 ,每次我打这个电话 运行时异常和错误代码501表示尚未实现此操作 虽然我已经通过Post Man测试了这些操作,但它们在这种情况下工作得很好。

    是否存在访问问题?

    下面是Typescript的代码:

    var fs = require('fs');
    var request = require('request-promise');
    var accessToken; 
    
    
    getAccessToken();
    setTimeout(listFolders, 5000);
    setTimeout(renameFile, 5000);
    setTimeout(uploadData, 5000);
    setTimeout(readData, 5000);
    
    
    function getAccessToken() {
        request(
        {
            method: 'post',
            url: 'https://login.microsoftonline.com/067e9632-ea4c-4ed9-9e6d-
            e294956e284b/oauth2/token',
            form: {
                grant_type: 'client_credentials',
                resource: 'https://management.core.windows.net/',
                client_id: 'dc9a4034-b03f-4974-9760-99541137a31c',
                client_secret: 'mJ1Eba+sz0hXQko7gBN3D5WPDVLySCHXg4Mg5F4Ru4s='
            },
            json: true,
        }, function (error, response, body) {
            //Print the Response
            accessToken = body.access_token;
            console.log(accessToken);
        });
    }
    function uploadData() {
        fs.createReadStream('E:/accessToken.txt')
        .pipe(request({
        method: 'post',
        url:
      'https://bswadls.azuredatalakestore.net/webhdfs/v1/iModelAnalytics/abc.txt?
       op=CREATE',
       json: true,
       headers: {
            "Authorization": "Bearer " + accessToken,
        }
        },
        function (error, response, body) {
        console.log(response.status);
            }
        ));
    
    }
    
    function readData() {
      request(
        {
            method: 'GET',
            url: 'https://bswadls.azuredatalakestore.net/webhdfs/v1/iModelAnalyti
            cs/readFile1.txt?op=OPEN'
            headers: {
                "Authorization": "Bearer " + accessToken,
            },
            json: true,
        }, function (error, response, body) {
            //Print the Response
            console.log("\n\nData = "+body);
            //console.log(response);
        }
    );
    }
    
    function listFolders() {
        request(
        {
            method: 'GET',
            url: 'https://bswadls.azuredatalakestore.net/webhdfs/v1/
            iModelAnalytics?op=LISTSTATUS',
            headers: {
                "Authorization": "Bearer " + accessToken,
            },
            json: true,
        }, function (error, response, body) {
            //Print the Response
            console.log("************List Folders*****************\n ");
            console.log(body);
        }
    );
    }
    
    function deleteFile() {
        request(
        {
            method: 'PUT',
            url: 'https://bswadls.azuredatalakestore.net/webhdfs/v1/
            iModelAnalytics/readFile.txt?op=DELETE',
            headers: {
                "Authorization": "Bearer " + accessToken,
            },
            json: true,
        }, function (error, response, body) {
            //Print the Response
            console.log("***************Delete File*****************\n ");
            console.log(body);
            console.log('Response= \n');
            console.log(response);
        }
    );
    }
    
    function renameFile() {
        request(
        {
            method: 'PUT',
            url: 'https://bswadls.azuredatalakestore.net/webhdfs/v1/
            iModelAnalytics/readFile1.txt?
            op=RENAME&destination=/iModelAnalytics/readFile2.txt',
            headers: {
                "Authorization": "Bearer " + accessToken,
            },
            json: true,
        }, function (error, response, body) {
            //Print the Response
            console.log("*************************Delete File*****************\n 
       ");
            console.log(body);
            console.log('Response= \n');
            console.log(response);
        }
    );
    } 
    

    这是我得到的错误: enter image description here

    请分享对此的任何想法。

    提前非常感谢。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Aaron Chen    8 年前

    尝试将代码更改为:

    function uploadData() {
        fs.createReadStream('E:/accessToken.txt').pipe(request({
            method: 'put',
            url:'https://bswadls.azuredatalakestore.net/webhdfs/v1/iModelAnalytics/abc.txt?op=CREATE&write=true',
            json: true,
            headers: {
                "Authorization": "Bearer " + accessToken,
            }
        }, function (error, response, body) {
            console.log(response.status);
        }));
    
    }
    
    function deleteFile() {
        request({
            method: 'delete',
            url: 'https://bswadls.azuredatalakestore.net/webhdfs/v1/iModelAnalytics/readFile.txt?op=DELETE',
            headers: {
                "Authorization": "Bearer " + accessToken,
            },
            json: true
        }, function (error, response, body) {
            //Print the Response
            console.log("***************Delete File*****************\n ");
            console.log(body);
            console.log('Response= \n');
            console.log(response);
        });
    }
    
    推荐文章