fix(streamlit): Fix btoa crash on UTF-8 .py file upload
Read all files as ArrayBuffer and use Uint8Array chunked encoding for base64, replacing btoa(text) which throws DOMException on non-ASCII characters (accents, CJK, etc). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
db486a56ad
commit
8691a5e048
@ -615,18 +615,12 @@ return view.extend({
|
|||||||
var reader = new FileReader();
|
var reader = new FileReader();
|
||||||
|
|
||||||
reader.onload = function(e) {
|
reader.onload = function(e) {
|
||||||
var content;
|
var bytes = new Uint8Array(e.target.result);
|
||||||
if (isZip) {
|
var chunks = [];
|
||||||
var binary = e.target.result;
|
for (var i = 0; i < bytes.length; i += 8192) {
|
||||||
var bytes = new Uint8Array(binary);
|
chunks.push(String.fromCharCode.apply(null, bytes.slice(i, i + 8192)));
|
||||||
var chunks = [];
|
|
||||||
for (var i = 0; i < bytes.length; i += 8192) {
|
|
||||||
chunks.push(String.fromCharCode.apply(null, bytes.slice(i, i + 8192)));
|
|
||||||
}
|
|
||||||
content = btoa(chunks.join(''));
|
|
||||||
} else {
|
|
||||||
content = btoa(e.target.result);
|
|
||||||
}
|
}
|
||||||
|
var content = btoa(chunks.join(''));
|
||||||
|
|
||||||
var uploadFn = isZip ? api.uploadZip(name, content, null) : api.uploadApp(name, content);
|
var uploadFn = isZip ? api.uploadZip(name, content, null) : api.uploadApp(name, content);
|
||||||
|
|
||||||
@ -645,11 +639,7 @@ return view.extend({
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isZip) {
|
reader.readAsArrayBuffer(file);
|
||||||
reader.readAsArrayBuffer(file);
|
|
||||||
} else {
|
|
||||||
reader.readAsText(file);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
renameApp: function(id, currentName) {
|
renameApp: function(id, currentName) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user