将多个附件放入 CouchDB
Put multiple Attachments to CouchDB
我有一个 .NET Core 控制台应用程序,它对我的 CouchDB 执行一些更新操作。
现在我必须向我的文档添加多个附件(在本例中为图像)。
Here (https://docs.couchdb.org/en/stable/api/document/common.html#attachments) 在 1.4.1.1.4 点他们描述了方法,但是我得到一个 Bad Request,我认为我的 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,然后将列表映射到它。我认为这不是最好的方法,但对我有用,聊胜于无。
希望对你也有帮助。
我有一个 .NET Core 控制台应用程序,它对我的 CouchDB 执行一些更新操作。 现在我必须向我的文档添加多个附件(在本例中为图像)。
Here (https://docs.couchdb.org/en/stable/api/document/common.html#attachments) 在 1.4.1.1.4 点他们描述了方法,但是我得到一个 Bad Request,我认为我的 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,然后将列表映射到它。我认为这不是最好的方法,但对我有用,聊胜于无。
希望对你也有帮助。