目前我正在处理一个允许用户将文件上传到 Firebase 存储的页面。在 Android 上通过 Google Chrome 打开网站并从标准 HTML 文件输入中选择要上传的文件时,它使用 Android 的本机文件选择器。
在大多数情况下,用户会选择存储在设备本地的文件,但文件选择器还会显示他们的 Google 云端硬盘文件,并且当前不会阻止用户选择这些文件之一。该文件在 Javascript 中作为 File 对象返回,但是当尝试上传到 Firebase Storage 时,它会抛出错误:“net::ERR_UPLOAD_FILE_CHANGED”并最终超过它的重试限制。
为了防止用户混淆,我想阻止用户在 Android 的文件选择器中选择 Google Drive 文件,或者至少认识到它无法上传并警告用户。
我考虑过检查 input 元素返回的 File 对象,但没有任何迹象表明本地文件与 Google Drive 文件。
<input type="file" id="upload_input" class="hide"/>
Run Code Online (Sandbox Code Playgroud)
$("#upload_input").change(function(e) {
if (!e.target.files) {
return;
}
const file = e.target.files[0];
uploadFile(file);
});
uploadFile(file) {
...
const storageRef = firebase.storage().ref();
const fileRef = storageRef.child(`${userID}/uploads/${file.name}`);
const uploadTask = fileRef.put(file);
...
}
Run Code Online (Sandbox Code Playgroud) javascript google-chrome firebase google-drive-api firebase-storage