[FIX] web: prevent missing 'data' argument error while uploading empty file

DataURL returns 'data:' in Chrome for empty files which is not valid dataURLas
it expects 'data:<mimetype>;base64' . This DataURL method is used to obtain
base64 representation of the file data,. That's why the 'data' argument is
missing and error is being generated.

Steps to reproduce:
1) Open Notes and create a new Note in Chrome.
2) Add a new attachment using /image command.
3) Add an empty file.

By applying this,it will return proper format for empty file.

sentry - 3749971166

closes odoo/odoo#120060

X-original-commit: fd6b904a97e7dab6e720675d9c805ed45eacef1e
Signed-off-by: Samuel Degueldre <sad@odoo.com>
This commit is contained in:
Mohit Beniwal
2023-04-28 13:33:25 +02:00
parent b303b20e7d
commit aeb199d77f
4 changed files with 30 additions and 3 deletions
+8 -1
View File
@@ -69,7 +69,14 @@ export function getDataURLFromFile(file) {
}
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.addEventListener("load", () => resolve(reader.result));
reader.addEventListener("load", () => {
// Handle Chrome bug that creates invalid data URLs for empty files
if (reader.result === "data:") {
resolve(`data:${file.type};base64,`);
} else {
resolve(reader.result);
}
});
reader.addEventListener("abort", reject);
reader.addEventListener("error", reject);
reader.readAsDataURL(file);
@@ -409,7 +409,12 @@ const utils = {
return new Promise(function (resolve, reject) {
var reader = new FileReader();
reader.addEventListener('load', function () {
resolve(reader.result);
// Handle Chrome bug that creates invalid data URLs for empty files
if (reader.result === "data:") {
resolve(`data:${file.type};base64,`);
} else {
resolve(reader.result);
}
});
reader.addEventListener('abort', reject);
reader.addEventListener('error', reject);