javascript - 错误:输入不是有效的 Base-64 字符串
问题描述
<div id="container">
<video autoplay="true" id="videoElement">
</video>
<canvas id="myCanvas" width="400" height="350"></canvas>
<button onclick="snapshot()">Click</button>
</div>
在这里,我imgInfo
通过 ajax 调用将值传递给我的 MVC 控制器。
<script>
var video = document.querySelector("#videoElement");
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext('2d');
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({ video: true })
.then(function (stream) {
video.srcObject = stream;
});
}
function snapshot() {
// Draws current image from the video element into the canvas
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
var imgInfo = canvas.toDataURL("image/png");
console.log(imgInfo);
var image = imgInfo; // to create a image read the previous example
$.ajax({
url: "@Url.Action("Contact","Home")",
// send the base64 post parameter
data: {
base64: image
},
// important POST method !
type: "post",
complete: function () {
console.log("Ready");
}
});
}
</script>
我将这些数据传递给联系控制器,它给了我错误Convert.FromBase64String()
..
输入不是有效的 Base64 字符串,因为它包含的字符不是 base 64 字符、两个以上的填充字符或填充字符中的无效字符
[HttpPost]
public ActionResult Contact(string base64)
{
var arr = Convert.FromBase64String(base64); //this line gives error.
Stream stream = new MemoryStream(arr);
}
字符串控制器正在接收
"data:image/png;base64,iVBsRq1Hm1dxzRO0XRdtB3rHjGO3o/DOOpZtoO+HM08RFvV0VRNVLzPtoqZ/aO7a7T20XYRsY1an8nzrKLvD2Kqxph1hxtdcx6nGOZe+1V7i7c09tFFHcsxotuOsYltnC8qFjDGaeZla3+NVR3TPOo9tXPEIqqYFpP2FHt6mip2bDQt73wbUfXRdry7Kpp5FXM96P2x1tzVPHVs0d2vqamjm3lGv3P2SsOJqrqodQ9TzBPntY2m64NtV0/siyqGRRt9XceyrWJZNXqeYaqimg9irhfas9M8xHo8jXqaoh11amIYNlG1c2yaMeppjGWz0M92bRf11EZbs15z9PMUw6JjU0RU51FNTVRTG3V1I4a5i7ZTqWCBQ0g6Sn0gNTwFtlDXz80k256S07YU/VP2nQ2b59+/kX78uuv2oOPkD+3NvPs5NAmCvW5oz9evmw///RjW67+USLEO2YfS4igIEhllfc+dZ5HApCJdRIlAlvaOKFMC1fWgKVzL/72pQ/XGZwKxcb/p6xEXROyvtqN2tR80bEeQPdH+dsugEwvY6NPufXDeHn38qD24P9fxkKn2P//6uy0WCzntkStJE5os58njJ+3i6dMASUVORK5CYII="
如何将此字符串转换为base64
格式?
解决方案
data:image/png;base64,
您可以通过从字符串中删除来解决此问题,例如:
public ActionResult Contact(string base64)
{
if (base64.IndexOf(',') > 0)
{
base64 = base64.Substring(base64.IndexOf(',') + 1);
}
var arr = Convert.FromBase64String(base64);
Stream stream = new MemoryStream(arr);
}
推荐阅读
- google-sheets - 电子表格:将文本拆分为预定义的列
- mysql - Mysql 查看新的字段值
- python - 为什么'os'作为我的包的子模块出现
- laravel - IE中的Vuejs模板
- javascript - 如何使用角度 5 动态更改 JSON 对象中的单选框值
- java - 将 JSON 响应以原始格式保存在 json 文件中
- git - 使用 apm 发布带有 git 子模块的包会包含子模块吗?
- oracle - 如何更新和下一步选择 PL/SQL
- ssh - 将自己锁定在 SSH 之外,Plesk 访问可用
- java - 从 MySQL 数据库读取文本文件并写入项目文件夹时多写一行