Release v0.4.0: dev -> main #251
@@ -258,12 +258,19 @@ async function showFileInEditor(file) {
|
|||||||
const wrap = document.querySelector('.editor-wrap');
|
const wrap = document.querySelector('.editor-wrap');
|
||||||
const img = $('file-preview');
|
const img = $('file-preview');
|
||||||
if (IMAGE_RE.test(file.type)) {
|
if (IMAGE_RE.test(file.type)) {
|
||||||
|
// CSP-safe: img-src only allows 'self' data:, so use a data: URL
|
||||||
|
// (FileReader.readAsDataURL) instead of blob: object URLs. #171
|
||||||
if (previewURL) URL.revokeObjectURL(previewURL);
|
if (previewURL) URL.revokeObjectURL(previewURL);
|
||||||
previewURL = URL.createObjectURL(file);
|
previewURL = null;
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onload = () => {
|
||||||
|
previewURL = reader.result;
|
||||||
img.src = previewURL;
|
img.src = previewURL;
|
||||||
img.alt = file.name;
|
img.alt = file.name;
|
||||||
wrap.classList.add('previewing');
|
wrap.classList.add('previewing');
|
||||||
img.classList.remove('hidden');
|
img.classList.remove('hidden');
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(file);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wrap.classList.remove('previewing');
|
wrap.classList.remove('previewing');
|
||||||
|
|||||||
Reference in New Issue
Block a user