无法使用文件路径将通用 base64 图像发送到 API

Posted

技术标签:

【中文标题】无法使用文件路径将通用 base64 图像发送到 API【英文标题】:Can't send up generic base64 image to API using filepath 【发布时间】:2020-08-01 20:50:12 【问题描述】:

所以我正在尝试将图像的 base64 字符串发送到 Cloudinary。除了文件路径这一位之外,一切正常。没有真正的文件路径,因为文件没有保存。

这就是它的外观(以@开头):

var uploadParams = new ImageUploadParams()

    File = new FileDescription(@"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==")
;

这就是我的做法:

var param = ("data:image/png;base64," + file);
// file is equal to the string (param gives the correct value that I'm looking for)

var uploadParams = new ImageUploadParams()

    File = new FileDescription(param)
;

我试过这些:

// 1

var uploadParams = new ImageUploadParams()

    File = new FileDescription(@param)
;

// 2

var uploadParams = new ImageUploadParams()

    File = new FileDescription(@ + param)
;

// 3

var uploadParams = new ImageUploadParams()

    File = new FileDescription((@param).ToString())
;

但是这些都不起作用,我真的不知道该怎么做。

【问题讨论】:

在这里查看。在那里你可以看到许多开源项目的有效用法:csharp.hotexamples.com/examples/CloudinaryDotNet.Actions/… 你的第二个 code-sn-p 有什么问题?第一个 sn-p 中的 @ 是 verbatim identifier 并且与字符串的内容没有任何关系,它只是允许您避免诸如显式转义字符串中的特殊字符之类的事情。 【参考方案1】:

根据@Oguz Ozgul 的链接,您的解决方案是:

string dataImageBase64 = @"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
string pattern = "data:.*?base64,";
string base64string = Regex.Replace(dataImageBase64, pattern, "");
Stream imageStream = new MemoryStream(Convert.FromBase64String(base64string));
var uploadParams = new ImageUploadParams

    File = new FileDescription("Picture", imageStream)
;

【讨论】:

以上是关于无法使用文件路径将通用 base64 图像发送到 API的主要内容,如果未能解决你的问题,请参考以下文章

无法将 base64 字符串发送到 PubNub

通过 JSON 将 base64 的图像发送到 PHP GD 库

angularJS 从 base64 制作二进制数据图像并作为图像文件发送到服务器

图像 Base64 未在 JSON 请求中正确发送

使用base64将视频从服务器流式传输到移动设备

为啥base64图像很大? xamarin 形式