小编J B*_*wer的帖子

使用 Android 的本机文件选择器时,防止 HTML 文件输入选择 Google Drive 中的文件

目前我正在处理一个允许用户将文件上传到 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

13
推荐指数
1
解决办法
4088
查看次数