javascript-网络摄像头js将图像上传到Amazon S3
作者:互联网
我正在尝试上传使用拍摄的图像
直接到Amazon S3
var dataUri = Webcam.snap();
var raw = window.atob(dataUri.replace(/^data\:image\/\w+\;base64\,/, ''));
在我获得保单(正确)之后,我就这样做了
$.ajax({
type: 'POST',
url: amazonUploadUrl,
data: {
file: raw,
contentType: "image/jpeg",
key: key,
AWSAccessKeyId: awsAccessKey,
acl: "public-read",
policy: policy,
signature: signature,
name: "",
Filename: filename
},
dataType: "",
success: function (r1) {
}
});
我尝试发送编码图像,解码图像,并尝试修改标头.我一直得到的就是这个
XMLHttpRequest无法加载“ amazon s3存储桶URL”.所请求的资源上没有“ Access-Control-Allow-Origin”标头.因此,不允许访问来源“我的本地域”.
我已经在亚马逊存储桶中添加了CORS信息.
我已经在使用plupload将图像上传到该存储桶.
我还上传了不使用Ajax的标准图像.
我似乎无法使它正常工作.
有任何想法吗?
谢谢
PS:我也尝试过使用
结果相同
解决方法:
您需要使用javascript FormData对象和本机XMLHttpRequest方法将数据直接发布到s3.今天早上,我尝试使用jQuery做完全相同的事情,但遇到了该错误消息,但是本机javascript API起作用.
我觉得jQuery默认不使用CORS或在某个地方通过错误的标头发送.
This answer shows how to convert to a format S3 can understand,在您的情况下可能没有必要.
这应该使您开始使用表单数据部分:
var fd = new FormData();
fd.append("contentType", "image/jpeg");
fd.append("key", key);
fd.append("AWSAccessKeyId", awsAccessKey);
fd.append("acl", "public-read");
fd.append("policy", policy);
fd.append("signature", signature);
fd.append('filename', "");
fd.append('file', raw);
var xhr = new XMLHttpRequest();
xhr.open('POST', amazonUploadUrl);
xhr.addEventListener('load', function(e) {
console.log('uploaded!', e) // Successful upload!
});
// Optionally bind to other xhr events, like error, progress, or abort.
// Using native XHR2 is nice because the progress event works and you
// can tack on upload progress counters.
xhr.send(fd);
标签:ajax,amazon-s3,webcam,javascript,jquery 来源: https://codeday.me/bug/20191121/2055657.html