我正在将div转换为可下载的图像。
function generateBanner() {
domtoimage.toBlob(document.getElementById('wrapper'))
.then(function(blob) {
console.log("blob", blob)
window.saveAs(blob, 'my-node.png');
});
}
此代码工作正常。 我的问题是这个div有一个托管在S3 Bucket中的图像
例如:
<article id="wrapper">
<p>{{ title }}</p>
<img class="logo" src="{{ logo }}" alt="">
<aside class="exclusive" ng-if="exclusive"></aside>
<aside class="off" ng-if="percentoff">{{ percentoff }}
</aside>
<div class="produtos">
<img src="https://s3-sa-east-1.amazonaws.com/teste-img-roge/Thumbs/0026954_30510_1_415.jpeg" alt="">
</div>
<aside class="valid" ng-if="valid"></aside>
</article>
之后,当我点击时,我收到了CORS错误,我不明白为什么。
在我的s3配置中我有这个:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
仍然是同样的错误。任何的想法 ?我在s3中尝试了几种不同的配置,并且几乎没有使用javascript的方法,但它们都没有用。
答案 0 :(得分:3)
你错过了Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, HEAD, POST
Access-Control-Max-Age: 3000
然后你应该看到以下标题:
<textarea (ngModelChange)="onKeyUp($event)"></textarea>
onKeyUp(ev) {
let finalEmailList = []
this.finalEmailList = [];
this.numberOfUsers = 3;
let emails = ev.replace(' ', '').split(/,| /);
emails.forEach(email => {
if (this.validateEmail(email)) {
//If the email has a valid format, the push it to the array
finalEmailList.push(email);
//it's a lodash function to clean the array an keep only unique emails in the array
this.finalEmailList = _.uniq(finalEmailList);
if (this.finalEmailList.length <= this.numberOfUsers) {
this.numberOfUsers -= this.finalEmailList.length;
}
}
})
}
//returns true if the email has a valid format
validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
请记住,在看到正确的标题之前可能需要一段时间。