[英]Put multiple Attachments to CouchDB
我有一個 .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。
有什么解決辦法嗎?
所以沒有人有解決方案,我嘗試了一些方法並找到了實現我需要的方法。 我制作了一個新附件並手動添加了每個圖像。 這是第一張圖片的示例:
Attachments attBuffer = new Attachments();
using (imagesFromApi[0])
{
using (MemoryStream m = new MemoryStream())
{
partImgs[0].Save(m, partImgs[0].RawFormat);
byte[] imageBytes = m.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
}
}
attBuffer.Hood = new Hood()
{
content_type = "image/jpeg",
data = base64String,
};
如您所見,我將我的任何圖像創建為 class,然后將列表映射到它。 我認為這不是最好的方法,但它對我有用,總比沒有好。
希望它也能幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.