You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C#客户端向Forge(APS)的UploadObject接口传递Buffer参数

C#客户端上传二进制数据到NodeJS端点的实现方法

核心思路

你的NodeJS服务端uploadObject方法需要接收二进制Buffer参数,C#客户端只需将本地Inventor零件文件的二进制内容作为HTTP请求体发送,并配合正确的请求头即可。

请求结构说明

  • 请求方法:POST(用于提交二进制数据)
  • URL:需携带bucketname和objectKey两个查询参数,格式如 http://你的服务端域名/UploadObject?bucketname=目标桶名&objectKey=存储对象名
  • 请求头:
    • Content-Type: application/octet-stream(标识请求体为二进制流)
    • 若服务端有额外身份验证需求,需添加对应头(如Authorization)
  • 请求体:Inventor零件文件的二进制字节数组

C#实现示例代码

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

public class ForgeUploadClient
{
    // 复用HttpClient以提升性能
    private static readonly HttpClient _httpClient = new HttpClient();

    public async Task UploadInventorPartToAps(string serverEndpoint, string bucketName, string objectKey, string localFilePath)
    {
        try
        {
            // 1. 读取本地Inventor零件文件的二进制数据
            byte[] fileBytes = await File.ReadAllBytesAsync(localFilePath);

            // 2. 构造完整请求URL(拼接查询参数)
            string requestUrl = $"{serverEndpoint}?bucketname={Uri.EscapeDataString(bucketName)}&objectKey={Uri.EscapeDataString(objectKey)}";

            // 3. 构造请求内容(二进制数据)
            using var content = new ByteArrayContent(fileBytes);
            content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");

            // 4. 发送POST请求
            HttpResponseMessage response = await _httpClient.PostAsync(requestUrl, content);

            // 5. 处理响应(根据服务端返回逻辑调整)
            response.EnsureSuccessStatusCode(); // 抛出非2xx状态码异常
            string responseContent = await response.Content.ReadAsStringAsync();
            Console.WriteLine($"上传成功,服务端响应:{responseContent}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"上传失败:{ex.Message}");
            throw;
        }
    }
}

// 调用示例
// var client = new ForgeUploadClient();
// await client.UploadInventorPartToAps(
//     "http://你的服务端地址/UploadObject",
//     "my-bucket",
//     "sample-part.ipt",
//     @"C:\LocalFiles\sample-part.ipt"
// );

关键细节说明

  • HttpClient复用:避免每次请求创建新的HttpClient,防止Socket资源耗尽
  • URL编码:用Uri.EscapeDataString处理桶名和对象名中的特殊字符(如空格、中文)
  • 文件读取:使用File.ReadAllBytesAsync异步读取文件,避免阻塞主线程
  • 响应处理:EnsureSuccessStatusCode会在服务端返回错误状态码时抛出异常,可根据需求调整错误处理逻辑

内容的提问来源于stack exchange,提问作者Mark Brouwers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:41:00