【发布时间】:2021-02-11 08:14:42
【问题描述】:
我有一个 .NET Core 控制台应用程序,它对我的 CouchDB 进行了一些更新。 现在我必须向我的文档添加多个附件(在本例中为图像)。
这里 (https://docs.couchdb.org/en/stable/api/document/common.html#attachments) 在第 1.4.1.1.4 点他们描述了这种方式,但我收到了错误的请求,我认为我的 json 并不完美。 所以我有一个我转换然后发送到数据库的图像列表,这是我的代码:
List<ImageFromApi> imagesFromApi = new List<ImageFromApi>();
string base64String;
foreach (var image in Images)
{
using (image)
{
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
byte[] imageBytes = m.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
}
}
ImageFromApi Imagebuffer = new ImageFromApi() {
content_type = "image/*",
data = base64String
};
imagesFromApi.Add(Imagebuffer);
DocAttachments bufferData = new DocAttachments() {imagesFromApi = imagesFromApi };
newImages._attachments = bufferData;
}
string imagesJson = JsonConvert.SerializeObject(newImages);
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(imagesJson);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
我从文档中看到了我的和那个之间的区别,但我不知道如何正确更改我的 json。
有什么解决办法吗?
【问题讨论】:
-
不是您唯一的问题,但
image/*是无效的内容类型。例如,您需要像image/jpeg这样的东西。 -
我不懂 C#,所以无法准确告诉您如何在代码中解决此问题,但您的
_attachments数据似乎是一个数组。_attachments应该是文件名到文件数据的映射。即{"_attachments":{"image1.jpg": {"content_type":"image/jpeg","data":"..."},"image2.jpg":{"content_type":"image/jpeg","data":"..."}}. -
是的,我知道这是问题所在,但我不知道如何解决。我正在四处寻找解决方案