C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2185个文字,预计阅读时间需要9分钟。
《最新原创系列目录【最新更新文章,点击查看详情】+ 在我的博客中》
系列目录在我的博客《C#二次开发BIMFACE系列61 File Management文件管理服务接口二次开发及实战详解》最后列出了 File Management 的接口,本篇主要介绍对该接口的封装及Demo程序。
File Management 相关名称解释本篇内容对应的视频教程《BIMFACE二次开发系列11.2 File Management接口二次开发及实战详解》
B站:www.bilibili.com/video/BV1Ei4y1U7k7
头条:www.ixigua.com/7087537345448116776
文件管理File Management API由以下基本类型构成,熟悉以下名词,以便更好的理解 File Management 模块
以上几种存储类型之间存在关联关系,层级关系如下所示:
- 需要通过Hub导航到Project,每个用户的Project都隶属于某个广联达产品的存储中心(hub);
- Folder隶属于Project,也可以把Project看做一个根文件夹;
- FileItem为存储数据的基本单元,可以位于Folder下一层级,也可以和Folder同一层级。
Access Token代表了用户当前应用的身份,用户可以通过Access Token对自己应用内的文件发起文件上传、下载、删除、更新等操作,同时也能访问所有BIMFACE的服务端数据接口进行轻量化和数据服务等操作。因此,获取AccessToken是程序开发的第一步,更多关于Access Token的说明可参考Access Token
错误码当用户访问File Management API出现错误时,File Management将返回给用户一个HTTP状态码,错误原因将在响应正文中返回,便于用户定位问题。
以下是伴随HTTP 404的错误码响应示例。
{ "timestamp": 1646985853402, "status": 404, "error": "Not Found", "message": "", "path": "/bdfs/v1/projects/10000000006016/folders/10000000006017/parent" } 术语表
File Management API封装在我的开源项目《BIMFACE.SDK.CSharp》中封装了54个File Management 接口的同步与异步方法,如下图
这里列出几个核心接口的封装代码
获取Hub列表
1 /// <summary> 2 /// 获取Hub列表 3 /// <para>通过该接口可查询您的账号已注册哪些存储中心(Hub),您可以将文件上传到已注册的存储空间里。</para> 4 /// </summary> 5 /// <param name="accessToken">令牌</param> 6 /// <param name="dateTimeFrom">开始时间,筛选时间范围内创建的Hub,格式为:yyyy-MM-dd HH:mm:ss</param> 7 /// <param name="dateTimeTo">终止时间,筛选时间范围内创建的Hub,格式为:yyyy-MM-dd HH:mm:ss</param> 8 /// <param name="info">描述信息</param> 9 /// <param name="name">Hub名称</param> 10 /// <param name="tenantCode">产品所属的租户 (默认值:"BIMFACE")</param> 11 /// <returns></returns> 12 /// <exception cref="BIMFaceException"></exception> 13 public virtual HubsResponse GetHubs(string accessToken, string dateTimeFrom = "", string dateTimeTo = "", string info = "", string name = "", string tenantCode = "BIMFACE") 14 { 15 /*官方文档:bimface.com/docs/file-management/v1/api-reference/getHubListUsingGET.html */ 16 17 //GET api.bimface.com/bdfs/domain/v1/hubs 18 string url = BIMFaceConstants.API_HOST + "/bdfs/domain/v1/hubs?1=1"; 19 if (!string.IsNullOrWhiteSpace(dateTimeFrom)) 20 { 21 url += "&dateTimeFrom=" + dateTimeFrom; 22 } 23 if (!string.IsNullOrWhiteSpace(dateTimeTo)) 24 { 25 url += "&dateTimeTo=" + dateTimeTo; 26 } 27 if (!string.IsNullOrWhiteSpace(info)) 28 { 29 url += "&info=" + info; 30 } 31 if (!string.IsNullOrWhiteSpace(name)) 32 { 33 url += "&name=" + name; 34 } 35 if (!string.IsNullOrWhiteSpace(tenantCode)) 36 { 37 url += "&tenantCode=" + tenantCode; 38 } 39 40 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 41 headers.AddOAuth2Header(accessToken); 42 43 try 44 { 45 HubsResponse response; 46 47 HttpManager bimface.com/docs/file-management/v1/api-reference/createProjectUsingPOST.html */ 15 16 //POST api.bimface.com/bdfs/domain/v1/hubs/{hubId}/projects 17 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/domain/v1/hubs/{0}/projects", hubId); 18 19 string data = new ProjectSaveRequest 20 { 21 Name = projectName, 22 Thumbnail = projectThumbnail, 23 Info = projectInfo 24 }.SerializeToJson(); 25 26 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 27 headers.AddOAuth2Header(accessToken); 28 29 try 30 { 31 ProjectResponse response; 32 33 HttpManager bimface.com/docs/file-management/v1/api-reference/createFolderUsingPOST.html */ 16 17 //POST api.bimface.com/bdfs/data/v1/projects/{projectId}/folders 18 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/{0}/folders", projectId); 19 string data = new FolderCreateRequest 20 { 21 Name = folderName, 22 ParentPath = parentPath, 23 ParentId = parentId, 24 AutoRename = autoRename 25 }.SerializeToJson(); 26 27 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 28 headers.AddOAuth2Header(accessToken); 29 30 try 31 { 32 FolderResponse response; 33 34 HttpManager bimface.com/docs/file-management/v1/api-reference/uploadFileItemUsingPOST.html */ 17 18 /* 此API详解,参考作者博客:《C#开发BIMFACE系列4 服务端API之源上传文件》 www.cnblogs.com/SavionZhang/p/11425804.html */ 19 20 /* 重要提示:使用普通文件流上传,不支持表单方式; 文件流需要在 request body 中传递 */ 21 22 byte[] fileBytes = fileStream.ToByteArray(); 23 24 //POST api.bimface.com/bdfs/data/v1/projects/{projectId}/fileItems 25 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/{0}/fileItems", projectId); 26 url = url + "?name=" + fileName.UrlEncode(Encoding.UTF8); // 使用URL编码(UTF-8) 27 if (!string.IsNullOrEmpty(parentId)) 28 { 29 url = url + "&parentId=" + parentId; 30 } 31 if (!string.IsNullOrEmpty(parentPath)) 32 { 33 url = url + "&parentPath=" + parentPath; 34 } 35 36 url = url + "&length=" + fileBytes.Length; 37 38 if (autoRename.HasValue) 39 { 40 url = url + "&autoRename=" + autoRename.Value; 41 } 42 if (!string.IsNullOrEmpty(sourceId)) 43 { 44 url = url + "&sourceId=" + sourceId; 45 } 46 47 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 48 headers.AddOAuth2Header(accessToken); 49 50 try 51 { 52 FileUpload2Response response; 53 54 HttpManager bimface.com/docs/file-management/v1/api-reference/uploadByUrlUsingPOST.html */ 19 20 /* 此API详解,参考作者博客:《C#开发BIMFACE系列4 服务端API之源上传文件》 www.cnblogs.com/SavionZhang/p/11425804.html */ 21 22 /* 如果需要上传的文件不在本地,且该文件可以通过指定的HTTP URL可以下载,BIMFACE支持直接传一个外部的HTTP文件URL, BIMFACE会去下载该文件,而无须用户先下载,再上传。 */ 23 24 //POST api.bimface.com/bdfs/data/v1/projects/{projectId}/fileItems/sourceUrl 25 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/{0}/fileItems/sourceUrl", projectId); 26 url = url + "?name=" + fileName.UrlEncode(Encoding.UTF8); // 使用URL编码(UTF-8) 27 28 if (!string.IsNullOrWhiteSpace(parentId)) 29 { 30 url = url + "&parentId=" + parentId; 31 } 32 if (!string.IsNullOrWhiteSpace(parentPath)) 33 { 34 url = url + "&parentPath=" + parentPath; 35 } 36 37 url = url + "&url=" + fileUrl.UriEscapeDataString(); 38 39 if (autoRename.HasValue) 40 { 41 url = url + "&autoRename=" + autoRename.Value; 42 } 43 if (!string.IsNullOrWhiteSpace(etag)) 44 { 45 url = url + "&etag=" + etag; 46 } 47 if (maxLength.HasValue) 48 { 49 url = url + "&maxLength=" + maxLength.Value; 50 } 51 if (!string.IsNullOrWhiteSpace(sourceId)) 52 { 53 url = url + "&sourceId=" + sourceId; 54 } 55 56 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 57 headers.AddOAuth2Header(accessToken); 58 59 try 60 { 61 FileUpload2Response response; 62 63 HttpManager bimface.com/docs/file-management/v1/api-reference/uploadByPolicyUsingPOST.html */ 18 /* 此API详解,参考作者博客:《C#开发BIMFACE系列5 服务端API之文件直传》 www.cnblogs.com/SavionZhang/p/11425945.html */ 19 20 /* BIMFACE使用了分布式对象存储来存储用户上传的模型/图纸文件。 21 如使用普通的文件上传接口,文件流会通过BIMFACE的服务器,再流向最终的分布式存储系统,整个上传过程会受BIMFACE服务器的带宽限制,上传速度非最优。 22 如使用文件直传接口,开发者应用在申请到一个Policy凭证后,可以直接上传文件跟BIMFACE后台的分布式存储系统, 23 这样上传速度和稳定性都会有提升,是我们推荐的上传方式。 24 */ 25 26 /* 使用流程如下: 27 1、开发者应用向BIMFACE申请上传Policy请求。 28 2、BIMFACE返回上传Policy和签名给开发者应用。 29 3、开发者应用使用在第二个步骤中获取的URL信息,直接上传文件数据到BIMFACE后端的分布式对象存储。 30 */ 31 32 FileUpload2Response response = null; 33 try 34 { 35 string fileName = new FileInfo(fileFullName).Name; 36 37 FileUploadPolicyResponse policyResponse = GetFileUploadPolicy(accessToken, projectId, fileName, parentId, parentPath, autoRename, sourceId, maxLength); 38 if (policyResponse.Code == HttpResult.STATUS_SUCCESS) 39 { 40 /* 官方文档 bimface.com/docs/file-management/v1/api-reference/getFilePolicyUsingGET.html 41 * 中说明该接口的请求地址为:POST api.bimface.com/bdfs/data/v1/projects/policy 42 * 43 * 经测试 44 * (1)使用该地址在postman中测试可以成功。但是使用本程序测试失败,提示 unauthorized。Full authentication is required to access this resource。 45 * (2)使用“获取文件直传的policy凭证”接口中返回的 host 地址(bf-prod-srcfile.oss-cn-beijing.aliyuncs.com),本程序测试成功。 46 */ 47 48 //string url = BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/policy"; 49 string url = policyResponse.Data.Host; 50 51 /* C# 语言 Dictionary 字典中 key 是关键字,不能添加进去。所以统一添加了响应的后缀 _BIMFACE_,解析时再去除后缀 */ 52 NameValueCollection kVDatas = new NameValueCollection(); 53 kVDatas.Add("name" + StringUtils.Symbol.KEY_SUFFIX, fileName); 54 kVDatas.Add("key" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.ObjectKey); 55 kVDatas.Add("policy" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.Policy); 56 kVDatas.Add("OSSAccessKeyId" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.AccessId); 57 kVDatas.Add("success_action_status" + StringUtils.Symbol.KEY_SUFFIX, "200"); 58 kVDatas.Add("callback" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.CallbackBody); 59 kVDatas.Add("signature" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.Signature); 60 61 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 62 headers.AddOAuth2Header(accessToken); 63 64 HttpManager gitee.com/NAlps/BIMFace.SDK
系列博客:www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python
2、jQuery、Vue.js、Bootstrap
3、数据库:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、达梦DM、人大金仓、 神通、南大通用 GBase
4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分库分表、读写分离
5、架构:领域驱动设计 DDD、ABP
6、环境:跨平台、Windows、Linux(CentOS、麒麟、统信UOS、深度Linux)、maxOS、IIS、Nginx
7、移动App:Android、IOS、HarmonyOS、微信、小程序、uni-app、MUI、Xamarin、Smobiler
云原生、微服务、Docker、CI/CD、DevOps、K8S;
Dapr、RabbitMQ、Kafka、分布式、大数据、高并发、负载均衡、中间件、RPC、ELK;
.NET + Docker + jenkins + Github + Harbor + K8S;
出处:www.cnblogs.com/SavionZhang
本文共计2185个文字,预计阅读时间需要9分钟。
《最新原创系列目录【最新更新文章,点击查看详情】+ 在我的博客中》
系列目录在我的博客《C#二次开发BIMFACE系列61 File Management文件管理服务接口二次开发及实战详解》最后列出了 File Management 的接口,本篇主要介绍对该接口的封装及Demo程序。
File Management 相关名称解释本篇内容对应的视频教程《BIMFACE二次开发系列11.2 File Management接口二次开发及实战详解》
B站:www.bilibili.com/video/BV1Ei4y1U7k7
头条:www.ixigua.com/7087537345448116776
文件管理File Management API由以下基本类型构成,熟悉以下名词,以便更好的理解 File Management 模块
以上几种存储类型之间存在关联关系,层级关系如下所示:
- 需要通过Hub导航到Project,每个用户的Project都隶属于某个广联达产品的存储中心(hub);
- Folder隶属于Project,也可以把Project看做一个根文件夹;
- FileItem为存储数据的基本单元,可以位于Folder下一层级,也可以和Folder同一层级。
Access Token代表了用户当前应用的身份,用户可以通过Access Token对自己应用内的文件发起文件上传、下载、删除、更新等操作,同时也能访问所有BIMFACE的服务端数据接口进行轻量化和数据服务等操作。因此,获取AccessToken是程序开发的第一步,更多关于Access Token的说明可参考Access Token
错误码当用户访问File Management API出现错误时,File Management将返回给用户一个HTTP状态码,错误原因将在响应正文中返回,便于用户定位问题。
以下是伴随HTTP 404的错误码响应示例。
{ "timestamp": 1646985853402, "status": 404, "error": "Not Found", "message": "", "path": "/bdfs/v1/projects/10000000006016/folders/10000000006017/parent" } 术语表
File Management API封装在我的开源项目《BIMFACE.SDK.CSharp》中封装了54个File Management 接口的同步与异步方法,如下图
这里列出几个核心接口的封装代码
获取Hub列表
1 /// <summary> 2 /// 获取Hub列表 3 /// <para>通过该接口可查询您的账号已注册哪些存储中心(Hub),您可以将文件上传到已注册的存储空间里。</para> 4 /// </summary> 5 /// <param name="accessToken">令牌</param> 6 /// <param name="dateTimeFrom">开始时间,筛选时间范围内创建的Hub,格式为:yyyy-MM-dd HH:mm:ss</param> 7 /// <param name="dateTimeTo">终止时间,筛选时间范围内创建的Hub,格式为:yyyy-MM-dd HH:mm:ss</param> 8 /// <param name="info">描述信息</param> 9 /// <param name="name">Hub名称</param> 10 /// <param name="tenantCode">产品所属的租户 (默认值:"BIMFACE")</param> 11 /// <returns></returns> 12 /// <exception cref="BIMFaceException"></exception> 13 public virtual HubsResponse GetHubs(string accessToken, string dateTimeFrom = "", string dateTimeTo = "", string info = "", string name = "", string tenantCode = "BIMFACE") 14 { 15 /*官方文档:bimface.com/docs/file-management/v1/api-reference/getHubListUsingGET.html */ 16 17 //GET api.bimface.com/bdfs/domain/v1/hubs 18 string url = BIMFaceConstants.API_HOST + "/bdfs/domain/v1/hubs?1=1"; 19 if (!string.IsNullOrWhiteSpace(dateTimeFrom)) 20 { 21 url += "&dateTimeFrom=" + dateTimeFrom; 22 } 23 if (!string.IsNullOrWhiteSpace(dateTimeTo)) 24 { 25 url += "&dateTimeTo=" + dateTimeTo; 26 } 27 if (!string.IsNullOrWhiteSpace(info)) 28 { 29 url += "&info=" + info; 30 } 31 if (!string.IsNullOrWhiteSpace(name)) 32 { 33 url += "&name=" + name; 34 } 35 if (!string.IsNullOrWhiteSpace(tenantCode)) 36 { 37 url += "&tenantCode=" + tenantCode; 38 } 39 40 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 41 headers.AddOAuth2Header(accessToken); 42 43 try 44 { 45 HubsResponse response; 46 47 HttpManager bimface.com/docs/file-management/v1/api-reference/createProjectUsingPOST.html */ 15 16 //POST api.bimface.com/bdfs/domain/v1/hubs/{hubId}/projects 17 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/domain/v1/hubs/{0}/projects", hubId); 18 19 string data = new ProjectSaveRequest 20 { 21 Name = projectName, 22 Thumbnail = projectThumbnail, 23 Info = projectInfo 24 }.SerializeToJson(); 25 26 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 27 headers.AddOAuth2Header(accessToken); 28 29 try 30 { 31 ProjectResponse response; 32 33 HttpManager bimface.com/docs/file-management/v1/api-reference/createFolderUsingPOST.html */ 16 17 //POST api.bimface.com/bdfs/data/v1/projects/{projectId}/folders 18 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/{0}/folders", projectId); 19 string data = new FolderCreateRequest 20 { 21 Name = folderName, 22 ParentPath = parentPath, 23 ParentId = parentId, 24 AutoRename = autoRename 25 }.SerializeToJson(); 26 27 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 28 headers.AddOAuth2Header(accessToken); 29 30 try 31 { 32 FolderResponse response; 33 34 HttpManager bimface.com/docs/file-management/v1/api-reference/uploadFileItemUsingPOST.html */ 17 18 /* 此API详解,参考作者博客:《C#开发BIMFACE系列4 服务端API之源上传文件》 www.cnblogs.com/SavionZhang/p/11425804.html */ 19 20 /* 重要提示:使用普通文件流上传,不支持表单方式; 文件流需要在 request body 中传递 */ 21 22 byte[] fileBytes = fileStream.ToByteArray(); 23 24 //POST api.bimface.com/bdfs/data/v1/projects/{projectId}/fileItems 25 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/{0}/fileItems", projectId); 26 url = url + "?name=" + fileName.UrlEncode(Encoding.UTF8); // 使用URL编码(UTF-8) 27 if (!string.IsNullOrEmpty(parentId)) 28 { 29 url = url + "&parentId=" + parentId; 30 } 31 if (!string.IsNullOrEmpty(parentPath)) 32 { 33 url = url + "&parentPath=" + parentPath; 34 } 35 36 url = url + "&length=" + fileBytes.Length; 37 38 if (autoRename.HasValue) 39 { 40 url = url + "&autoRename=" + autoRename.Value; 41 } 42 if (!string.IsNullOrEmpty(sourceId)) 43 { 44 url = url + "&sourceId=" + sourceId; 45 } 46 47 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 48 headers.AddOAuth2Header(accessToken); 49 50 try 51 { 52 FileUpload2Response response; 53 54 HttpManager bimface.com/docs/file-management/v1/api-reference/uploadByUrlUsingPOST.html */ 19 20 /* 此API详解,参考作者博客:《C#开发BIMFACE系列4 服务端API之源上传文件》 www.cnblogs.com/SavionZhang/p/11425804.html */ 21 22 /* 如果需要上传的文件不在本地,且该文件可以通过指定的HTTP URL可以下载,BIMFACE支持直接传一个外部的HTTP文件URL, BIMFACE会去下载该文件,而无须用户先下载,再上传。 */ 23 24 //POST api.bimface.com/bdfs/data/v1/projects/{projectId}/fileItems/sourceUrl 25 string url = string.Format(BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/{0}/fileItems/sourceUrl", projectId); 26 url = url + "?name=" + fileName.UrlEncode(Encoding.UTF8); // 使用URL编码(UTF-8) 27 28 if (!string.IsNullOrWhiteSpace(parentId)) 29 { 30 url = url + "&parentId=" + parentId; 31 } 32 if (!string.IsNullOrWhiteSpace(parentPath)) 33 { 34 url = url + "&parentPath=" + parentPath; 35 } 36 37 url = url + "&url=" + fileUrl.UriEscapeDataString(); 38 39 if (autoRename.HasValue) 40 { 41 url = url + "&autoRename=" + autoRename.Value; 42 } 43 if (!string.IsNullOrWhiteSpace(etag)) 44 { 45 url = url + "&etag=" + etag; 46 } 47 if (maxLength.HasValue) 48 { 49 url = url + "&maxLength=" + maxLength.Value; 50 } 51 if (!string.IsNullOrWhiteSpace(sourceId)) 52 { 53 url = url + "&sourceId=" + sourceId; 54 } 55 56 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 57 headers.AddOAuth2Header(accessToken); 58 59 try 60 { 61 FileUpload2Response response; 62 63 HttpManager bimface.com/docs/file-management/v1/api-reference/uploadByPolicyUsingPOST.html */ 18 /* 此API详解,参考作者博客:《C#开发BIMFACE系列5 服务端API之文件直传》 www.cnblogs.com/SavionZhang/p/11425945.html */ 19 20 /* BIMFACE使用了分布式对象存储来存储用户上传的模型/图纸文件。 21 如使用普通的文件上传接口,文件流会通过BIMFACE的服务器,再流向最终的分布式存储系统,整个上传过程会受BIMFACE服务器的带宽限制,上传速度非最优。 22 如使用文件直传接口,开发者应用在申请到一个Policy凭证后,可以直接上传文件跟BIMFACE后台的分布式存储系统, 23 这样上传速度和稳定性都会有提升,是我们推荐的上传方式。 24 */ 25 26 /* 使用流程如下: 27 1、开发者应用向BIMFACE申请上传Policy请求。 28 2、BIMFACE返回上传Policy和签名给开发者应用。 29 3、开发者应用使用在第二个步骤中获取的URL信息,直接上传文件数据到BIMFACE后端的分布式对象存储。 30 */ 31 32 FileUpload2Response response = null; 33 try 34 { 35 string fileName = new FileInfo(fileFullName).Name; 36 37 FileUploadPolicyResponse policyResponse = GetFileUploadPolicy(accessToken, projectId, fileName, parentId, parentPath, autoRename, sourceId, maxLength); 38 if (policyResponse.Code == HttpResult.STATUS_SUCCESS) 39 { 40 /* 官方文档 bimface.com/docs/file-management/v1/api-reference/getFilePolicyUsingGET.html 41 * 中说明该接口的请求地址为:POST api.bimface.com/bdfs/data/v1/projects/policy 42 * 43 * 经测试 44 * (1)使用该地址在postman中测试可以成功。但是使用本程序测试失败,提示 unauthorized。Full authentication is required to access this resource。 45 * (2)使用“获取文件直传的policy凭证”接口中返回的 host 地址(bf-prod-srcfile.oss-cn-beijing.aliyuncs.com),本程序测试成功。 46 */ 47 48 //string url = BIMFaceConstants.API_HOST + "/bdfs/data/v1/projects/policy"; 49 string url = policyResponse.Data.Host; 50 51 /* C# 语言 Dictionary 字典中 key 是关键字,不能添加进去。所以统一添加了响应的后缀 _BIMFACE_,解析时再去除后缀 */ 52 NameValueCollection kVDatas = new NameValueCollection(); 53 kVDatas.Add("name" + StringUtils.Symbol.KEY_SUFFIX, fileName); 54 kVDatas.Add("key" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.ObjectKey); 55 kVDatas.Add("policy" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.Policy); 56 kVDatas.Add("OSSAccessKeyId" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.AccessId); 57 kVDatas.Add("success_action_status" + StringUtils.Symbol.KEY_SUFFIX, "200"); 58 kVDatas.Add("callback" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.CallbackBody); 59 kVDatas.Add("signature" + StringUtils.Symbol.KEY_SUFFIX, policyResponse.Data.Signature); 60 61 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders(); 62 headers.AddOAuth2Header(accessToken); 63 64 HttpManager gitee.com/NAlps/BIMFace.SDK
系列博客:www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python
2、jQuery、Vue.js、Bootstrap
3、数据库:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、达梦DM、人大金仓、 神通、南大通用 GBase
4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分库分表、读写分离
5、架构:领域驱动设计 DDD、ABP
6、环境:跨平台、Windows、Linux(CentOS、麒麟、统信UOS、深度Linux)、maxOS、IIS、Nginx
7、移动App:Android、IOS、HarmonyOS、微信、小程序、uni-app、MUI、Xamarin、Smobiler
云原生、微服务、Docker、CI/CD、DevOps、K8S;
Dapr、RabbitMQ、Kafka、分布式、大数据、高并发、负载均衡、中间件、RPC、ELK;
.NET + Docker + jenkins + Github + Harbor + K8S;
出处:www.cnblogs.com/SavionZhang

