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

如何向AWS中的Symantec Protection Engine发送Base64字符串或UTF-8 MemoryStream

问题根源与解决方案

1. Base64转换错误(核心问题)

你当前的代码把Base64字符串直接转成UTF-8字节数组,这相当于把Base64文本本身当成了文件内容,而非解码Base64得到原始文件的字节。这会导致API收到的是Base64格式的文本数据,而非实际需要扫描的文件内容,从而触发Unsupported Media Type错误。

正确的Base64解码方式应该用Convert.FromBase64String,而不是Encoding.UTF8.GetBytes:

// resumeFile是Base64字符串,先解码为原始文件的字节数组
byte[] fileBytes = Convert.FromBase64String(resumeFile);
MemoryStream myMemoryStream = new MemoryStream(fileBytes);

2. 修正后的完整代码

替换错误的转换逻辑后,代码应该如下:

// resumeFile is a string in base64
byte[] fileBytes = Convert.FromBase64String(resumeFile);
MemoryStream myMemoryStream = new MemoryStream(fileBytes);

HttpResponseMessage response = new HttpResponseMessage();
Uri scanUrl = new Uri(hostUrl + "/api/Scan");
HttpClient client = new HttpClient();

var form = new MultipartFormDataContent();
var streamContent = new StreamContent(myMemoryStream);
// 若知道原始文件的MIME类型,建议设置对应类型,比如PDF用"application/pdf",通用情况用"application/octet-stream"
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
form.Add(streamContent, "documents", fileName);
form.Add(new StringContent("NONE"), "composite");

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
client.DefaultRequestHeaders.Add("Prefer", "respond-async");
response = await client.PostAsync(scanUrl, form);

// 先检查响应状态码,再读取内容
string responseContent = await response.Content.ReadAsStringAsync();
Console.WriteLine($"响应状态码: {response.StatusCode}");
Console.WriteLine($"响应内容: {responseContent}");

// 只有当响应是JSON格式时再反序列化
if (response.Content.Headers.ContentType?.MediaType == "application/json")
{
    dynamic parsed = JsonConvert.DeserializeObject(responseContent);
    Console.WriteLine(parsed);
}

3. 如何获取详细错误信息

你之前无法查看parsed变量,可能是因为API返回的不是JSON格式(比如错误页面文本)。建议先直接输出响应的原始内容和状态码,不管格式如何,这样能看到API返回的具体错误描述:

  • 先打印response.StatusCode确认HTTP状态
  • 打印await response.Content.ReadAsStringAsync()的原始结果,这能直接看到API返回的所有错误细节,而不是只依赖反序列化后的对象

4. 额外注意事项

  • 确保fileName参数包含正确的文件扩展名(比如resume.pdf),部分API会通过扩展名辅助识别文件类型
  • 如果原始文件有明确的MIME类型,替换application/octet-stream为对应类型(比如Word文档用application/vnd.openxmlformats-officedocument.wordprocessingml.document),能提升API识别准确率

内容的提问来源于stack exchange,提问作者Mini Hulk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:08:18