У меня есть куча изображений глубокого зума, хранящихся в ведрах Amazon s3, и у меня есть веб-страница, которая отображает их с помощью средства просмотра Open Seadragon dzi. Я могу отображать изображения, но я не могу их загрузить; Я получаю ошибку безопасности, что у меня испорченный холст.Не удается загрузить изображение с испорченного холста; Как загрузить изображение Seadragon, размещенное в ведро Amazon s3?
Я установил конфигурацию CORS в ведрах:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
, что позволило мне показать изображения (ранее мой OpenSeadragon вызов не удалось, так как не было никакого контроля доступа, Allow-Origin заголовок), но мой холст все еще испорчен.
Я попытался установить политику crossOrigin в зрителе Seadragon:
var viewer = OpenSeadragon({
crossOrigin: "Anonymous",
id: "databaseviewer",
prefixUrl: "../../Scripts/openseadragon/images/",
tileSources: url,
maxZoomLevel: 20
});
, но это ничего не меняет. Это мой полный сценарий:
var url = '@Model.ImageUrl';
var viewer = OpenSeadragon({
crossOrigin: "Anonymous",
id: "databaseviewer",
prefixUrl: "../../Scripts/openseadragon/images/",
tileSources: url,
maxZoomLevel: 20
});
viewer.addHandler('open', function() {
var downloadlink = document.getElementById("download");
$(downloadlink).on("click", function() {
var img = viewer.drawer.canvas.toDataURL("image/png");
downloadlink.href = img;
downloadlink.download = '@Model.DatabaseName';
});
});