【发布时间】:2019-12-22 07:45:51
【问题描述】:
目前我正在开发一个允许用户将文件上传到 Firebase 存储的页面。在 Android 上通过 Google Chrome 打开网站并从标准 HTML 文件输入中选择要上传的文件时,它使用 Android 的本机文件选择器。
在大多数情况下,用户会选择存储在设备本地的文件,但文件选择器也会显示他们的 Google 云端硬盘文件,并且当前不会阻止用户选择其中一个文件。该文件在 Javascript 中作为 File 对象返回,但是当尝试上传到 Firebase 存储时,它会抛出错误:“net::ERR_UPLOAD_FILE_CHANGED”并最终超过它的重试限制。
为了防止用户混淆,我想阻止用户在 Android 的文件选择器中选择 Google Drive 文件,或者至少认识到它无法上传并警告用户。
我考虑过检查输入元素返回的 File 对象,但没有任何迹象表明可以将本地文件与 Google Drive 文件区分开来。
<input type="file" id="upload_input" class="hide"/>
$("#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);
...
}
【问题讨论】:
-
有什么解决办法吗?
-
仍在寻求解决方案
标签: javascript firebase google-chrome google-drive-api firebase-storage