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();
|
||||
|
||||
reader.onload = function(e) {
|
||||
var content;
|
||||
if (isZip) {
|
||||
var binary = e.target.result;
|
||||
var bytes = new Uint8Array(binary);
|
||||
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 bytes = new Uint8Array(e.target.result);
|
||||
var chunks = [];
|
||||
for (var i = 0; i < bytes.length; i += 8192) {
|
||||
chunks.push(String.fromCharCode.apply(null, bytes.slice(i, i + 8192)));
|
||||
}
|
||||
var content = btoa(chunks.join(''));
|
||||
|
||||
var uploadFn = isZip ? api.uploadZip(name, content, null) : api.uploadApp(name, content);
|
||||
|
||||
@ -645,11 +639,7 @@ return view.extend({
|
||||
});
|
||||
};
|
||||
|
||||
if (isZip) {
|
||||
reader.readAsArrayBuffer(file);
|
||||
} else {
|
||||
reader.readAsText(file);
|
||||
}
|
||||
reader.readAsArrayBuffer(file);
|
||||
},
|
||||
|
||||
renameApp: function(id, currentName) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user