Я использую плагин камеры Cordova, чтобы позволить моему приложению делать фотографии, и до сих пор просто не могу заставить его что-либо делать с возвращенными данными.
Я перестал пытаться загрузить его с URL-адреса файловой системы, и сейчас пытаюсь использовать base64.
Мой CSP:
<meta http-equiv="Content-Security-Policy" content="
default-src *;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline' 'unsafe-eval';
media-src *;
img-src * data:;
connect-src * ws: wss:;
" />
... однако я пробовал все остальные CSP, которые я могу найти в Интернете.Независимо от того, что там, моя консоль всегда записывает:
"Отказался соединяться с 'data: image / jpg; base64 ..., поскольку он нарушает Политику безопасности содержимого документа.", Источник: http://localhost:8080/js/main.js"
Кто-нибудь знает, почему это так, или как я могу это исправить?
Код для преобразования данных изображения в файл:
navigator.camera.getPicture(response => {
this.urltoFile('data:image/jpg;base64,'+response, 'test.jpg')
.then(file => {
console.log(file);
})
}, () => {}, {
destinationType : navigator.camera.DestinationType.DATA_URL,
})
... и функция urlToFile
:
urltoFile(url, filename){
let mimeType = (url.match(/^data:([^;]+);/)||'')[1];
return (fetch(url)
.then(res => {
return res.arrayBuffer();
})
.then(buf => {
return new File([buf], filename, {
type: mimeType
});
})
);
}