JSからAndroidのChromeでGoogle Drive上のファイルをアップロードしようとすると以下のエラーが出る。
net::ERR_UPLOAD_FILE_CHANGED
ブラウザのバグだが長いこと解決されていない。
https://bugs.chromium.org/p/chromium/issues/detail?id=1063576
一度arrayBufferとしてコピーすることで避けることができる。
const buffer = await file.arrayBuffer();
const blob = new File([buffer], file.name, { type: file.type });
しかしarrayBufferのコピーが有効ではないことがあり
NG Uncaught (in promise) DOMException: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.
のようなエラーが出ることがある。例えばsetTimeoutの中でコピーするとNGのようだ。この場合はコードの書き方を変えるしかないようだ。