簡體   English   中英

將多個附件添加到 CouchDB

[英]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 如下所示: 邁傑森

我從文檔中看到了我的和那個之間的區別,但我不知道如何正確更改我的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM