【问题标题】:How to set good permissions for uploading file by FORGE API?如何通过 FORGE API 设置上传文件的良好权限?
【发布时间】:2018-11-07 05:49:15
【问题描述】:

我必须将文件从服务器上传到文档管理,但在上传文件步骤时遇到问题。有关信息,我使用 Dynamics NAV 编写脚本。

在从 Dynamics NAV 上传之前,我尝试使用 Git Bash 和 cURL 命令:它可以工作。

这是我拥有的权限: see here

这是所有步骤以及我能做什么:

  • 找到我要上传的文件夹的 HubID (DONE)
  • 创建存储位置(完成)
  • 上传文件(失败)
  • 创建第一个版本。

当我执行上传步骤时,出现错误 401 : Forbidden 但我不知道我应该去哪里设置好的权限。

这是 cURL 命令:

curl -X PUT -H "Authorization: Bearer nq4dc0KRWeaaUnyIJA8aN0MIKi3j" 
    --data-binary '@\\server\folder\subfolder\file.rvt' 
    "https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/2448af43-45f3-4b81-a8cf-38c69b03197b.rvt"

所以看到这个后,我不需要为上传文件设置特殊权限。

这是我的 Dynamics Nav 代码:

HttpWebRequestMgt.Initialize(STRSUBSTNO('https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/%1',Filename));
HttpWebRequestMgt.DisableUI;
HttpWebRequestMgt.SetMethod('PUT');
HttpWebRequestMgt.SetContentType('application/octet-stream');
HttpWebRequestMgt.AddHeader('Authorization','Bearer ' + Token);

FileManagement.BLOBImportFromServerFile(TempBlob,ServerFolder+'\'+Filename);

HttpWebRequestMgt.AddBodyBlob(TempBlob);

CLEAR(TempBlob);
TempBlob.Blob.CREATEINSTREAM(ResponseInStream);

HttpWebRequestMgt.GetResponse(ResponseInStream,HttpStatusCode,ResponseHeaders);
ResponseInStream.READTEXT(ResponseText);

CLEAR(HttpWebRequestMgt);
CLEAR(TempBlob);

有了这个我需要一个特定的权限......

一些建议?

【问题讨论】:

    标签: file-upload autodesk-forge autodesk-bim360 bim


    【解决方案1】:

    问题应该与您的 access_token 有关。首先,您需要通过 API https://developer.autodesk.com/en/docs/oauth/v2/tutorials/get-3-legged-token/ 获取您的 3-legged access token,上传文件,请确保具有“data:create”或“data:write scope”的范围,了解详情,请参阅页面https://developer.autodesk.com/en/docs/data/v2/tutorials/upload-file/

    希望对你有帮助。

    【讨论】:

    • 我使用三足令牌。这是我的范围参数:范围=帐户:读取帐户:写入数据:读取数据:写入数据:创建存储桶:读取存储桶:创建
    【解决方案2】:

    我找到了解决办法。

    BIM360Setup.GET;
    SalespersonPurchaser.GET(BIM360Setup."Default Job Admin");
    
    IF Token = '' THEN 
      Token := Get3LeggedToken;
    
    StorageID := COPYSTR(FileURNID,STRPOS(FileURNID,'/') + 1);//***
    
    HttpWebRequestMgt.Initialize(STRSUBSTNO('https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/%1',StorageID));
    HttpWebRequestMgt.DisableUI;
    HttpWebRequestMgt.SetMethod('PUT');
    HttpWebRequestMgt.SetContentType('application/x-www-form-urlencoded');
    HttpWebRequestMgt.AddHeader('Authorization','Bearer ' + Token);
    HttpWebRequestMgt.SetReturnType('*/*');
    
    FileManagement.BLOBImportFromServerFile(TempBlob,ServerFolder+'\'+Filename);
    HttpWebRequestMgt.AddBodyBlob(TempBlob);
    
    
    CLEAR(TempBlob);
    TempBlob.Blob.CREATEINSTREAM(ResponseInStream);
    
    HttpWebRequestMgt.GetResponse(ResponseInStream,HttpStatusCode,ResponseHeaders);
    
    ResponseText := TempBlob.ReadAsText('',TEXTENCODING::UTF8);
    
    CLEAR(HttpWebRequestMgt);
    CLEAR(TempBlob);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-16
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      相关资源
      最近更新 更多