【发布时间】:2017-08-30 22:51:47
【问题描述】:
我试图通过根据文档传递多个图像并使用multipart/form-data 来调用 Microsoft Cognitive API,但我收到一条错误消息,显示“不支持的媒体类型”。我尝试同时使用ByteArray 和StreamContent。
private static byte[] GetImageAsByteArray(Stream fileStream)
{
using (var binaryReader = new BinaryReader(fileStream))
{
return binaryReader.ReadBytes((int)fileStream.Length);
}
}
static void Main(string[] args)
{
var uriBase = "https://westus.api.cognitive.microsoft.com/vision/v1.0/recognizeText";
var subscriptionKey = "<subscriptionKey>";
var client = new HttpClient();
var uri = string.Concat(uriBase, "?", "language=en&detectOrientation=true");
var images = new List<Stream>();
var img = Image.FromStream(File.Open("<imageName>", FileMode.Open));
var stream = new MemoryStream();
img.Save(stream, ImageFormat.Bmp);
stream.Position = 0;
images.Add(stream);
using (var content = new MultipartFormDataContent())
{
foreach (var image in images)
{
//content.Add(new StreamContent(stream));
content.Add(new ByteArrayContent(GetImageAsByteArray(image)));
}
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
content.Headers.ContentType = new MediaTypeHeaderValue("multipart/form-data");
var response = client.PostAsync(uri, content).Result;
}
}
【问题讨论】:
-
passing multiple images as per documentation? api 文档并没有说你可以传入多个图像... -
感谢您的回复,但在这种情况下,multipart/form-data 不是用于上传多个值的图像吗?也许这对我来说是一个糟糕的假设,但他们为什么要支持 multipart/form-data?