File upload 如何通过FORGE API设置上传文件的良好权限?

File upload 如何通过FORGE API设置上传文件的良好权限?,file-upload,autodesk-forge,autodesk-bim360,bim,File Upload,Autodesk Forge,Autodesk Bim360,Bim,我必须将一个文件从服务器上传到文档管理,但我在上传文件步骤遇到问题。作为参考,我使用Dynamics NAV编写脚本 在从Dynamics NAV上传之前,我尝试使用Git Bash和cURL命令:它可以工作 这是我拥有的权限: 以下是所有步骤以及我能做的: 查找我要上载的文件夹的HubID(完成) 创建存储位置(完成) 上传文件(失败) 创建第一个版本 当我执行上传步骤时,我有一个错误401:禁止,但我不知道设置好权限应该去哪里 这是cURL命令: curl -X PUT -H "Aut

我必须将一个文件从服务器上传到文档管理,但我在上传文件步骤遇到问题。作为参考,我使用Dynamics NAV编写脚本

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

这是我拥有的权限:

以下是所有步骤以及我能做的:

  • 查找我要上载的文件夹的HubID(完成)
  • 创建存储位置(完成)
  • 上传文件(失败)
  • 创建第一个版本
当我执行上传步骤时,我有一个错误401:禁止,但我不知道设置好权限应该去哪里

这是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"
所以在看到这个之后,我不需要设置上传文件的特殊权限

这是my Dynamics导航代码:

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);
有了这个我需要一个特定的权限


一些建议?

问题应该与您的访问令牌有关。在一切开始之前,您需要通过API获取您的三条腿访问令牌,要上载文件,请确保具有“数据:创建”或“数据:写入范围”的范围,有关详细信息,请参阅页面

希望有帮助。

我找到了解决办法

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);

我用三条腿的代币。这是我的作用域参数:作用域=帐户:读取帐户:写入数据:读取数据:写入数据:创建存储桶:读取存储桶:创建