我需要做的是:我有一个使用网络摄像头捕获照片的网页。单击按钮时,它将当前的网络摄像头图像保存到HTML画布对象。当我从canvas对象获取图像时,它以Base64编码的字符串形式出现,例如
数据:图像/ png; base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABwCAYAAAD8HIl9AAAgAElEQVR4Xky9B7hld3Hl ...
另一方面是Web API服务,用于将照片保存到服务器。它是用C#编写的,并且需要FileStream。
我的前端仅使用HTML和Javascript(包括Angular / Jquery)编写。我需要将图像以期望的格式发送到服务器。
我已经把头撞在墙上两天了。看来我需要做的是创建一个FormData对象,将图像附加到该对象上,然后将其发送出去。但是这样做给我一个200错误。某些东西格式不正确。
当我使用文件类型的输入元素并从磁盘上载文件时,此代码可以完美地工作。当我将其传递给base64图像字符串时,它将失败。当我将图像字符串附加到FormData对象时,它将失败。
factory.setPhoto = function (id, image) {
var fd = new FormData();
fd.append('file', image);
return $http.post(baseUrl + '/' + id, fd, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
}).then(function (results) {
// whatever
});
};
您应该将base64数据组件转换为原始二进制数据,然后将其通过formdata。试用本文中的一种解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句